简单工厂又叫静态工厂
![b8e26a1ffb25ba78e9f32dd610b978c5.png](https://i-blog.csdnimg.cn/blog_migrate/9da9fa6a224e4299595c313515dbdc9f.jpeg)
简单工厂模式的结构
简单工厂实现方式如上图所示。
具体实现方式就是根据工厂类传入的参数进行判断到底创建那种具体产品。
无论有多少种具体产品,以及这些产品之间具有怎样的结构关系,工厂类始终不会受到影响,但是增加新的产品必然会导致工厂类的修改,这样并不符合"开-放"原则。而且在工厂类中含有创建产品的判断逻辑,使得系统在将来扩展的时候很困难。增加新的产品都需要修改工厂创造产品的逻辑,这样做是很痛苦的。
工厂方法
工厂方法模式的用意是定义一个创建产品的工厂接口,将产品对象的创建推迟到工厂的子类中。
![92e8cabb1f86d27825cd59d04110f4f4.png](https://i-blog.csdnimg.cn/blog_migrate/8a2bc5eb24a771bf94da2f27277aea1a.jpeg)
工厂方法模式结构
上图为工厂方法模式结构其中:
抽象工厂(Creator)与业务无关,创建对象的工厂类需要实现这个抽象工厂。
具体工厂:是实际创建产品的工厂。
抽象产品:创建具体产品的超类型。
具体产品:需要创建的具体的产品。
如果系统需要增加一个产品就向系统中增加一个具体产品类和具体工厂类,完全不需要修改抽象工厂或者其他具体工厂。
工厂方法创建返回的类型还应该是抽象产品,而不是具体产品,这样才能保证产品的多态性。
抽象工厂
同一个具体工厂角色创建同一个产品族的产品。
抽象工厂模式类图如下所示
![ae1c2670a010f5ece47c2130765237f8.png](https://i-blog.csdnimg.cn/blog_migrate/e7ccc7f0b35045a9b3efcf5e8ac78d69.jpeg)