设计模式之工厂模式

来源:互联网 发布:衣着判断 知乎 编辑:程序博客网 时间:2024/06/08 02:34

准备这段时间,每天看看博文,认真学习一下设计模式,因为对于复杂的业务来说,确实需要了,不然,很多东西看不太懂。

今天先聊,工厂模式,我的理解,做个笔记。

工厂模式可以分为三类: 
1)简单工厂模式(Simple Factory) 
2)工厂方法模式(Factory Method) 
3)抽象工厂模式(Abstract Factory) 
         这三种模式从上到下逐步抽象,并且更具一般性。 

一般都是2类,工厂方法和抽象工厂,其中简单工厂是工厂方法的一种特例,也就是只有一个具体的工厂,而工厂方法有抽象工厂和实现它的不同具体工厂方法。而抽象工厂,则是比工厂方法更加复杂的一种,体现在程序上就是多个接口。

对于,这种设计模式,感觉还是讲故事理解更快点,因为它是一种思想,然后才转成代码的,连思想在干什么都不知道,何谈代码实现?

这里先引用别人大牛举的例子

    1)还没有工厂时代:假如还没有工业革命,如果一个客户要一款宝马车,一般的做法是客户去创建一款宝马车,然后拿来用。
    2)简单工厂模式:后来出现工业革命。用户不用去创建宝马车。因为客户有一个工厂来帮他创建宝马.想要什么车,这个工厂就可以建。比如想要320i系列车。工厂就创建这个系列的车。即工厂可以创建产品。
    3)工厂方法模式时代:为了满足客户,宝马车系列越来越多,如320i,523i,30li等系列一个工厂无法创建所有的宝马系列。于是由单独分出来多个具体的工厂。每个具体工厂创建一种系列。即具体工厂类只能创建一个具体产品。但是宝马工厂还是个抽象。你需要指定某个具体的工厂才能生产车出来。
    4)抽象工厂模式时代:随着客户的要求越来越高,宝马车必须配置空调。而且这空调必须对应给系列车才能使用。于是这个工厂开始生产宝马车和需要的空调。
         最终是客户只要对宝马的销售员说:我要523i空调车,销售员就直接给他523i空调车了。而不用自己去创建523i空调车宝马车.
   (我只是举个例子,说到宝马配置空调完全是为了举例,甚至有点扯,哪有车和空调必须对应才能使用啊)
     这就是工厂模式。


我来一一解释一下,

1:当你不用设计工厂模式的时候,当你需要一个宝马车,必须新建一个类,定义里面的属性和方法。而你又想要个福特汽车,那么你再重新定义上面的步骤。这里就做了很多重复的事情,因为它们都是汽车,都有共性,可以节省代码,而且如果你明天又想要其他汽车,怎办?又得重头开始,没有代码复用,同时,当你各种各样的汽车太多时,就很难管理,这都是没有工厂,所谓工厂就是能产生大量的产品。

2:简单工厂就是说,只有这么一个工厂,它是 万能的,或者说是上帝(因为他无所不能),你告诉工厂说,造大众车,明天就给你造出来了,后天要雪佛兰,就造好了,你想让这个工厂干什么,就能干什么,可是,实际上汽车工厂,都是这样的吗?

3:所以就有了工厂方法模式,用例子来说,就是,我就是一家BMW(别摸我)公司,可是我这家大公司,有很多子工厂,分别造不同的系列的宝马车,比如,迷你smart,宝马7系列,等等,你用脚趾头想象都知道,肯定不是一家工厂生产出来的,肯定是不同的流水线生产的。这就是不同的工厂方法。(会造不同的宝马车)

4:而抽象工厂模式,则是面向比较复杂的对象,用网上的说,就是产品族,按照我的理解,就是具体产品有多个了,也就是抽象产品有多个接口,所以也就是这种工厂比较复杂了,也就需要抽象工厂模式,这些产品之间而且存在一定的联系,比如说例子中的空调,迷你smart汽车的空调必须是他们厂自己生产的,不能混用宝马7系列的,同样的宝马7系列的也不能用别人的空调,这里更加具体,细化,意味着复杂。也就是其他工程解决不了的。


总之,看了一些别人写的工厂模式,慢慢想想差不多,理解了这种思想,顺便推荐2个博文,个人觉得,简洁明了,看人家的代码吧。

1.http://blog.csdn.net/hguisu/article/details/7505909

2.http://blog.csdn.net/ai92/article/details/209198

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 按压式瓶盖打不开怎么办 睫毛胶水瓶盖打不开怎么办 玻璃杯盖子滑丝怎么办 瓶盖滑扣了怎么办 胶水瓶口被塞住怎么办 美林盖子打不开怎么办 美林瓶盖打不开怎么办 泰诺瓶盖打不开怎么办 玻璃罐头瓶盖打不开怎么办 塑料罐头瓶盖打不开怎么办 喷笔壶盖打不开怎么办 陶瓷壶盖卡住了怎么办 贝德玛瓶盖摔坏怎么办 塑料盖子错位拧不开怎么办 安全瓶盖坏了怎么办 刚买面霜打不开怎么办 可乐瓶盖鼓起来怎么办 暖壶塞子吸住了怎么办 茶兀瓶盖打不开怎么办 水杯盖太紧了拧不开怎么办 矿泉水瓶盖拧不开了怎么办 弩弦用手拉不上怎么办 茅台酒瓶口漏酒怎么办 化妆品盖子丢了怎么办 化妆品盖子碎了怎么办 自制水泵压力小怎么办 大学数学不会做怎么办 下雪了怎么办教案幼儿园小班 下水道被混凝土堵塞怎么办 日本足贴丢了胶布怎么办 牙齿被可乐腐蚀怎么办 三十岁满嘴无牙怎么办 水乳盖子打不开怎么办 蜂蜜罐子打不开了怎么办 蜂蜜盖子第二次拧不开怎么办 玻璃杯子拧不开盖子怎么办 玻璃杯水杯盖子拧不开怎么办 鞋子蝴蝶结掉了怎么办 蝴蝶翅膀受伤了怎么办 手被割了个口子怎么办 致炫方向盘重怎么办