工厂模式的适用范围
当遇到下面的情况时,开发人员可以考虑采用工厂模式:
· 在编码时不能预见需要创建哪一种类的实例。
· 一个类使用它的子类来创建对象。
· 开发人员不希望将创建哪个类的实例以及如何创建实例的信息暴露给外部程序。
除了上面提到的例子,工厂模式的实现方式还允许有一些小小的变化,例如:
· 基类可以是一个抽象类,在这种情况下,工厂类必须返回一个非抽象类。
· 基类提供了一些缺省方法,只有当这些缺省方法不能满足特殊需求的情况下才在子类中重写这些方法。
· 可以直接通过传递给工厂类的参数决定应该返回哪一个子类的实例。
下面我们通过一个例子来理解这个模式:
例子:下面这个应用程序会要求我们输入一个人的姓名和性别,如果输入的性别是Male,就会输出信息Hello Mr...,如果是Female,会输出信息hello Ms<Name>。
public class Person {
// name string
public String name;
// gender : M or F
private String gender;
public String getName() {
return name;
}
public String getGender() {
return gender;
}
}// End of class
这个person类比较简单,它有两个方法getName和getGender,现在,我们将创建两个子类,Male和Female将会在屏幕上打印欢迎信息。
public class Male extends Person {
public Male(String fullName) {
System.out.println("Hello Mr. "+fullName);
}
}// End of class
Also, the class Female
public class Female extends Person {
public Female(String fullNname) {
System.out.println("Hello Ms. "+fullNname);
}
}// End of class
现在,我们还需要创建一个客户端,工厂类SalutationFactory将会根据提供的数据返回相应的欢迎信息。
public class SalutationFactory {
public static void main(String args[]) {
SalutationFactory factory = new SalutationFactory();
factory.getPerson(args[0], args[1]);
}
public Person getPerson(String name, String gender) {
if (gender.equals("M"))
return new Male(name);
else if(gender.equals("F"))
return new Female(name);
else
return null;
}
}// End of class
这个类在运行的时候接收两个参数,并打印相应的信息。
运行类:
java Zhousp M
屏幕输出: “Hello Mr. Zhousp”.
分享到:
相关推荐
Java设计模式之工厂模式 Java设计模式之工厂模式
Java设计模式之工厂模式实现,供大家一起共同分享学习。
java设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种...
设计模式 工厂模式,简单工厂模式 抽象工厂模式 java 反射
JAVA设计模式之工厂模式.pdf
工厂模式:对java工厂模式详细分析,理解.。。
Java设计模式之工厂模式(Factory).doc
JAVA设计模式之工厂模式3种完整免费提供.pdf
JAVA设计模式之工厂模式(3种完整免费提供).pdf
专题资料(2021-2022年)Java设计模式之工厂模式Factory.doc
工厂模式按照《Java 与模式》中的提法分为三类: 1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。还有一种...
主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式、工厂方法、抽象工厂、Java工厂模式举例等内容,需要的朋友可以参考下
抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常...
主要介绍了Java设计模式之工厂模式实现方法,结合实例形式较为详细的分析了工厂模式的分类、原理、实现方法与相关注意事项,需要的朋友可以参考下
给同学上课时做的ppt