“HeadFirst设计模式“:工厂模式-创新互联

工厂模式

创新互联公司-专业网站定制、快速模板网站建设、高性价比噶尔网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式噶尔网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖噶尔地区。费用合理售后完善,10余年实体公司更值得信赖。

工厂模式是创建型模式模式,解决new对象时的一些列问题,如:依赖,耦合,后期维护等

1. 简单工厂模式

如:有一个披萨店类,制作披萨流程如下的,,,代码里直接new出了披萨,然后做些操作,如下:

“Head First 设计模式“ :工厂模式“Head First 设计模式“ :工厂模式

我们把new这段代码封装起来,移动到单独的一个类里(SimplePizzaFactory),我们新增的类就是工厂,如下;

“Head First 设计模式“ :工厂模式“Head First 设计模式“ :工厂模式

最终的代码如下;

“Head First 设计模式“ :工厂模式“Head First 设计模式“ :工厂模式

总结:

新增的SimplePizzaFactory就是简单工厂模式(一般没有子类,没有再继承关系),我们看看定义,如下:

“Head First 设计模式“ :工厂模式“Head First 设计模式“ :工厂模式

2. 工厂方法模式

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。

问题:披萨店的列子中,如果有两个分店,一个在美国,一个在英语,,那他们需要生产本地化的披萨,这时要引入工厂方法模式了,类图如下:

“Head First 设计模式“ :工厂模式“Head First 设计模式“ :工厂模式

说明:pizzaStore超类(工厂类),有两个子类,分别两个子类来决定到底实例化那些产品。

3. 抽象工厂模式

定义:抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。可以理解成是多个工厂方法的组合。

解决问题:在工厂方法模式中,我们的具体创建者每次使用都只能创建一个同类型的对象,假如我们现在需要的是多个不同类型的对象,工厂方法就满足不了需求了。这时我们可以把多个工厂方法组合到一个类,这就是抽象工厂模式,它就是专门用来创建多个产品,也可以说是创建产品家族的。类图如下:

“Head First 设计模式“ :工厂模式“Head First 设计模式“ :工厂模式

需求:为了保证质量,我们需要把原料统一共同时,就适合抽象工厂来解决。类图如下:

“Head First 设计模式“ :工厂模式“Head First 设计模式“ :工厂模式

抽象工厂模式的优点

(1)、允许客户使用抽象的接口创建一组相关产品,而不需要知道(或者关心)产出的具体产品是什么,这样客户就可以从具体的产品中解耦出来。

(2)、一个具体工厂可以创建多个产品,与工厂方法模式相比,可以少产生具体工厂的类数量。

(3)、易于交换产品系列,只要更换具体工厂,就可以改变这个产品系列。

抽象工厂模式的和缺点

(1)、抽象工厂是使用组合的方式把工厂方法集合到一个类中,当新增一个产品家族成员时就要修改抽象工厂类及其下面的具体工厂类,所以它的扩展性比较差。

(2)、每新增一个产品子类都要创建一个类,当产品子类过多时会产生很多类,导致系统复杂性加大。

抽象工厂模式的使用场合

1、当需要创建产品家族,或者需要想让创建的产品集合起来时使用。

2、当系列产品不固定,在以后可能会增加整个系列产品时使用。

设计原则

    1. 对扩展开放,对修改关闭。

    2. 依赖抽象,不要依赖具体类。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页标题:“HeadFirst设计模式“:工厂模式-创新互联
URL标题:http://scyanting.com/article/pcscd.html