5.封装创建-简单工厂方法(Simple Factory method)+多态工厂+抽象工厂(Abstract factories)...

5.封装创建-简单工厂方法(Simple Factory method)+多态工厂+抽象工厂(Abstract factories)

 

这个应该是我们平时接触得最多的设计模式了吧,我个人也是经常使用,这是一个创建型的设计模式,其实这3个模式原理都是一样的,不过使用了接口,内部类,所以使得实现方法更加的优雅。我们到底面对着一个什么样的问题,这才决定我们为什么要用它,假如你的系统里面很多地方需要创建a对象和b对象,很明显,这样是分散的分布在系统里面的,这时,如果你要在创建a对象的地方添加一个新类型c对象,那么你就惨了,你需要在那么多个地方创建,而且更加麻烦的是逻辑问题,因为多了一个对象,判断方面可能会出现不可预知的bug,这时候我们会想,为什么不弄成一个服务,生产服务,我使用的是a服务,而不是a对象,当我需要添加新的对象,我可以在a服务里面添加,这时候我的客户端代码就不需要改变了,需要改变的是生产a服务的时候加多一个对象,这就是工厂模式的基本思路:所有需要创建的对象的代码都由工厂来代工,当需要新的功能,新的类型,只需要改变一下工厂就ok了,这也保证了接口的稳定性。

 

 

 

 

简单工厂方法(Simple Factory method):

class car{

}

 

class benz extends car{}

class baoma extends car{}

 

class factory{

public static getCar(String type){

if(type.equals("Benz")) return new benz(); 

if(type.equals("baoma")) return new baoma(); 

}

}

 

这就是一个简单的工厂方法了,面对简单的系统,使用这个就很足够,但是一旦逻辑复杂了,创建的产品需要逻辑判断,那么这个工厂可能就负担不了了,而且所有逻辑都在工厂这里,一旦工厂着火,那么整个系统就该瘫痪了,所以我们就衍生出下一个工厂模式

 

 

 

 

 

多态工厂(Polymorphic factories):

多态工厂的好处就是为了解决刚才上诉的问题,他实现了每一类对象,每一个工厂,我觉得在逻辑上把纵多的逻辑分担在了每一个工厂上面,上面的例子,只需要为每一个产品添加一个工厂类即可

 

 

 

抽象工厂(Abstract factories):

抽象工厂其实更加一般化,更加抽象化,使用内部类实现更加优雅,我举个例子,奔驰和宝马都是跑车类型的,然后五菱和东方都是屌丝类型的,那么这时候是不是就有两个大类型,那么我们就为其创建两个工厂,每个工厂分别生产两大类型的车,然后跑车工厂就得生产奔驰宝马....,可以简单概述就是一个工厂生产多个相同大类型的产品,而且经常我们用到抽象工厂,我们可以假设是根据不同环境,生产不同的环境类型(一系列需要的产品)。

 

 

 

 

其实工厂模式的变形很多,只要感觉对了,就差不多了,不需要死扣,毕竟复杂度这个东西是一个很难以衡量的东西,而且工厂模式通常可以混用的。我的另外一篇文章说的比较好。

 

 

 

 

http://abcxo.iteye.com/admin/blogs/1476090

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值