工厂模式介绍
工厂模式具体包括:简单工厂,工厂方法,抽象工厂这三种,由简单->复杂,可以理解为把对象的创建过程进行了抽象,也可以理解为将创建对象的过程进行封装,作为client仅仅需要使用对象,而不关心创建对象的具体过程。创建型的设计模式基本都是遵循这样一个原则。
抽象工厂
UML图说明
1.抽象工厂角色:具体工厂必须实现这个接口
2.具体工厂角色:实现抽象工厂角色接口,具体创建产品的逻辑在实现类完成
3.抽象产品角色:所有产品的超类,负责实现产品共性的抽象定义
4.具体产品角色:实现抽象产品角色,负责具体的逻辑和功能
使用场景
-
一个系统不依赖于产品线实例如何被创建、组合和表达的细节。
-
系统中有多于一个的产品线,而每次只使用其中某一产品线。
-
一个产品线(或是一组没有任何关系的对象)拥有相同的约束。
我们来造个车吧
抽象工厂角色:
/** * 抽象工厂接口 */ public interface Factory { /** * 传入产品类型参数,返回不同的产品,如:汽车,电脑,食物等 * @param productType 产品类型 * @return Product 返回抽象的产品定义 */ public Product createProduct(String productType); }
具体工厂角色:
这是个汽车厂
/** * 汽车厂 **/ public class CarFactory implements Factory { @Override public Product createProduct(String productType) { System.out.println("开始生产嘀嘀嘀...."); return new Car(); } }
抽象产品角色:
public interface Product { public void product(); }
具体产品角色:
public class Car implements Product { @Override public void product() { System.out.println("这是量跑的飞起的汽车... ...污...污...污..."); } }
测试:
public class Test { public static void main(String[] args) { Factory carFactory = new CarFactory(); Product car = carFactory.createProduct("汽车"); car.product(); } }
/*
输出
开始生产....汽车
这是量跑的飞起的汽车... ...污...污...污...
*/