建设公司的网站首页,公司企业网站模板,建设需要什么系统网站,郑州平台公司过气的#xff0c;终究是过气了 上一章简单介绍了工厂模式(四), 如果没有看过,请观看上一章
一.工厂方法模式
工厂方法模式#xff0c;通过定义工厂父类负责定义创建对象的公共接口#xff0c;而子类则负责生成具体的对象。
将类的实例化#xff08;具体产品的创建… 过气的终究是过气了 上一章简单介绍了工厂模式(四), 如果没有看过,请观看上一章
一.工厂方法模式
工厂方法模式通过定义工厂父类负责定义创建对象的公共接口而子类则负责生成具体的对象。
将类的实例化具体产品的创建延迟到工厂类的子类具体工厂中完成即由子类来决定应该实例化创建哪一个类。
组成角色具体关系作用抽象产品ProductPizza具体产品的父类描述具体产品的公共接口具体产品Concrete ProductChinese1,Eluosi1抽象产品的子类工厂类创建的目标类描述生产的具体产品抽象工厂CreatorAbsOrderPizzaFactory具体工厂的父类描述具体工厂的公共接口具体工厂Concrete CreatorChineseAbsOrderPizzaFactoryFactory 等抽象工厂的子类被外界调用描述具体工厂实现FactoryMethod工厂方法创建产品的实例 二. 实例讲解
二.一 定义抽象产品
public interface Pizza {void make();
}二.二 定义具体的产品
二.二.一 中国蓝色披萨
Slf4j
public class ChineseBluePizza implements Pizza{Overridepublic void make() {log.info(制作中国蓝色披萨);}
}二.二. 二 中国红色披萨
Slf4j
public class ChineseRedPizza implements Pizza{Overridepublic void make() {log.info(制作中国红披萨);}
}
二.二. 三 俄罗斯蓝色披萨
Slf4j
public class EluosiBluePizza implements Pizza{Overridepublic void make() {log.info(制作俄罗斯蓝色披萨);}
}
二.二. 四 俄罗斯红色披萨
Slf4j
public class EluosiRedPizza implements Pizza{Overridepublic void make() {log.info(制作俄罗斯红披萨);}
}
二.三 定义抽象工厂
public interface AbsOrderPizzaFactory {public Pizza createPizaa (String type);
}二.四 定义具体的工厂
二.四.一 中国的工厂
public class ChineseAbsOrderPizzaFactoryFactory implements AbsOrderPizzaFactory {Overridepublic Pizza createPizaa(String type) {if (red.equalsIgnoreCase(type)){return new ChineseRedPizza();}else if (blue.equalsIgnoreCase(type)){return new ChineseBluePizza();}else {return null;}}
}二.四.二 俄罗斯的工厂
public class EluosiAbsOrderPizzaFactoryFactory implements AbsOrderPizzaFactory {Overridepublic Pizza createPizaa(String type) {if (red.equalsIgnoreCase(type)){return new EluosiRedPizza();}else if (blue.equalsIgnoreCase(type)){return new EluosiBluePizza();}else {return null;}}
}
二.五 客户端调用
Testpublic void oneTest() {AbsOrderPizzaFactory absOrderPizzaFactory new ChineseAbsOrderPizzaFactoryFactory();Pizza pizza absOrderPizzaFactory.createPizaa(red);pizza.make();pizza absOrderPizzaFactory.createPizaa(blue);pizza.make();absOrderPizzaFactory new EluosiAbsOrderPizzaFactoryFactory();pizza absOrderPizzaFactory.createPizaa(red);pizza.make();}二.六 新增加种类
如果现在新增加 美国的 蓝色 和红色 披萨 那么不需要改变之前的东西 只需要增加具体的产品和具体的工厂实现即可
二.六.一 新增加具体的产品
Slf4j
public class MeiBluePizza implements Pizza{Overridepublic void make() {log.info(制作美国蓝色披萨);}
}Slf4j
public class MeiRedPizza implements Pizza{Overridepublic void make() {log.info(制作美国红披萨);}
}二.六.二 新增加具体的工厂实现
public class MeiAbsOrderPizzaFactoryFactory implements AbsOrderPizzaFactory {Overridepublic Pizza createPizaa(String type) {if (red.equalsIgnoreCase(type)){return new MeiRedPizza();}else if (blue.equalsIgnoreCase(type)){return new MeiBluePizza();}else {return null;}}
}二.六.三 客户端调用
Testpublic void twoTest() {AbsOrderPizzaFactory absOrderPizzaFactory new MeiAbsOrderPizzaFactoryFactory();Pizza pizza absOrderPizzaFactory.createPizaa(red);pizza.make();pizza absOrderPizzaFactory.createPizaa(blue);pizza.make();}工厂方法不支持 产品族 只是生成一个单一的对象实例 本章节的代码放置在 github 上: https://github.com/yuejianli/DesignPattern/tree/develop/MethodFactory 谢谢您的观看如果喜欢请关注我再次感谢 !!!