2、创建型模式---工厂模式

工厂模式可以分为三类:
1)简单工厂模式(Simple Factory)
2)工厂方法模式(Factory Method)
3)抽象工厂模式(Abstract Factory)

1、简单工厂模式(simple factory)是类的创建模式,又叫静态工厂方法(static factory method)模式。
简单工厂模式根据传入的参数决定创建哪一类实例。
public class peopleFactory{
public static people create(int type){
if(type==1){
return new chinese();
}else if(type==2){
return new american();
}
}
}
简单工厂模式的优缺点分析:
优点:它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。
缺点:简单工厂模式违背了“开放封闭原则”,就是违背了“系统对扩展开放,对修改关闭”的原则,因为当我新增加一个产品的时候必须修改工厂类,相应的工厂类就需要重新编译一遍。
2、工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。
public class bmwFactory implements Icarfactory{
public Icar createCar(){
return new bwm();
}
}
public class buickFactory implements Icarfactory{
public Icar createCar(){
return new buick();
}
}

3、抽象工厂
    提供一个创建一系列相关或相互依赖对象的接口或抽象类,而无需指定它们具体的类。
2、创建型模式---工厂模式_第1张图片
protected Human createHuman(HumanEnum humanEnum) {
Human human = null;
//如果传递进来不是一个Enum中具体的一个Element的话,则不处理
if (!humanEnum.getValue().equals("")) {
try {
human = (Human)Class. forName(humanEnum.getValue()).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
return human;
}

public class MaleHumanFactory extends AbstractHumanFactory {
//创建一个男性黑种人
public Human createBlackHuman() {
turn super.createHuman(HumanEnum. BlackMaleHuman);
}
//创建一个男性白种人
public Human createWhiteHuman() {
return super.createHuman(HumanEnum. WhiteMaleHuman);
}
//创建一个男性黄种人
public Human createYellowHuman() {
return super.createHuman(HumanEnum. YelloMaleHuman);
}
}

main:
//第一条生产线,男性生产线
HumanFactory maleHumanFactory = new MaleHumanFactory();
//第二条生产线,女性生产线
HumanFactory femaleHumanFactory = new FemaleHumanFactory();
//生产线建立完毕,开始生产人了:
Human maleYellowHuman = maleHumanFactory.createYellowHuman();
Human femaleYellowHuman = femaleHumanFactory.createYellowHuman();
maleYellowHuman.cry();
maleYellowHuman.laugh();
femaleYellowHuman.sex();

你可能感兴趣的:(工厂模式)