一 概述
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,这种类型的设计模式属于创建型模式。工厂模式分为简单工厂模式,工厂方法模式,抽象工厂模式。
二 简单工厂模式
简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类
结构
简单工厂模式包含如下角色:
Factory:工厂角色
工厂角色负责实现创建所有实例的内部逻辑Product:抽象产品角色
抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口ConcreteProduct:具体产品角色
具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。
下面的是结构图:
代码示例
抽象产品类
1 | public abstract class Shape { |
具体产品类A
1 | public class Circle extends Shape{ |
具体工厂类B
1 | public class Square extends Shape{ |
工厂类
1 | public class SimpleFactory { |
主程序
1 | public class Main { |
三 工厂方法模式
工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类
结构
工厂方法模式包含如下角色:
- Product:抽象产品
- ConcreteProduct:具体产品
- Factory:抽象工厂
- ConcreteFactory:具体工厂
代码示例
抽象产品接口
1 | public interface Pizza { |
具体产品A
1 | public class NYBeefPizza implements Pizza{ |
具体产品B
1 | public class TPSeafoodPizza implements Pizza{ |
抽象工厂类
1 | public abstract class PizzaFactory { |
具体工厂类A
1 | public class NYBeefPizzaFactory extends PizzaFactory { |
具体工厂类B
1 | public class TPSeafoodPizzaFactory extends PizzaFactory { |
四 抽象工厂模式
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。
结构
抽象工厂模式包含如下角色:
- AbstractFactory:抽象工厂
- ConcreteFactory:具体工厂
- AbstractProduct:抽象产品
- Product:具体产品
代码示例
产品类
1 | //发动机以及型号 |
工厂类
1 | //创建工厂的接口 |
主程序
1 | public class Customer { |