前言:
为了帮助读者更好的理解我们设计模式;我特地的将23种经典模式分开讲;从概念到原理,从原理到代码实现,我将详细的为你讲解
工厂模式:
(一) 概念 :
- 定义一个用于创建对象的接口,让子类去决定去实例话哪一个类.工厂方法是一个类的实例话拓展到子类.核心工厂不再负责产品的创建,这样的核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象好处是,是工厂模式可以使系统不在修改具体的工厂角色的情况下引进新的产品.
(二) 规则:工厂模式是由四种角色组成:
- . 抽象工厂角色(Creator):是工厂模式的核心,与应用程序无关,任何在模式种创建的对象的工厂类都必须实现此接口;
- 具体工厂角色(Concrete Creator ):这是实现抽象工厂接口的具体工厂类.包含与应用程序相关的逻辑,并且收到程序调用创建产品对象.
- 抽象产品角色(Product):工厂方法模式锁创建的对象的超类型,也就是产品对象的共同父类或者共同拥有的接口.
- 具体产品角色(Concrete Product ): 这个角色实现了抽象产品角色所定义的接口,某具体产品有专门的具体工厂创建,他们之间是一一对应的关系.
(三)代码的实现:
角色:抽象产品父类:此抽象非彼抽象,而是所有产品的共同的属性;
创建抽象工厂:
为具体工厂提供接口!
创建具体产品类:在这里我举出飞机和汽车的列子,我完成飞机的例子,由读者根据我的提示,仿造出自己写出汽车的测试;
根据接口,分别创建汽车和飞机的具体工厂类,由具体工厂类指向具体产品类;
四种角色创建完毕,接下来我们开始测试一下;
个人点评:
工厂模式利用了Java的多态的特性,使IFactory与子类和子接口联系起来,降低了代码的耦合性,每个子工厂独立生产自己的产品,每个产品都有自己的独立的生产路线,
工厂模式的优缺点:
优点:解决了简单工厂模式的开放封闭原则,保留了封装对象的创建过程的优点,降低了客户端的耦合性;
缺点:加大代码量,每创建一种新的产品都需要创建一个新的生产路线.