设计模式之工厂模式

将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目依赖关系的解耦。从而提高项目的扩展和维护性。

一、简单工厂模式

定义了一个创建对象的类,由这个类来封装实例化对象的行为代码。

由一个工厂对象决定创建出哪一种产品类的实例。

  • 披萨项目需求:便于披萨种类的扩展,便于维护
  1. 披萨的种类很多 比如 GreekPizza、CheesePizza、PepperPizza等
  2. 披萨的制作有 prepare(准备),bake(烘烤), cut(切片), box(打包)
  3. 完成披萨店订购功能。

方案:把创建Pizza的对象封装到一个类中,这样我们有新的Pizza种类时,只需要修改该类即可,其它有创建Pizza对象的代码就不需要修改了。

二、工厂方法模式:

定义一个用于创建对象的接口,让子类决定实例化哪一个类。

工厂方法模式将对象的实例化推迟到子类

抽象产品类Product:定义产品的共性,实现对事务最抽象的定义

抽象工厂Creator:具体如何创建产品类是由工厂实现类ConcreteCreator完成。

  • 披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨。
  1. 比如:北京的CheesePizza、北京的PepperPizza等或者是伦敦的CheesePizza、伦敦的PepperPizza等

方案:将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现。

三、抽象工厂模式

为创建一组相关或相互依赖的对象提供一种接口,而且无需指定他们的具体类

四、JDK中的Calendar类使用了简单工厂方法模式

原文地址:https://www.cnblogs.com/wjh123/p/11341234.html