`
zyq070
  • 浏览: 20542 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

工厂模式个人理解

 
阅读更多

  通常所说的工厂模式涉及到 简单工厂模式 , 工厂方法模式和抽象工厂模式。 对于简单工厂模式,理解很简单,把类的实例化的操作通过一个工厂类来操作,实例的使用类尽管使用而不关心对象是如何创建,这样减少了类与类之间的耦合性。相对简单。下面来集中讨论下工厂方法和抽象工厂模式:

 

  工厂方法:定义了一个创建对象的接口,由子类具体去实例化不同的类,把实例化推迟到了子类。 相当于在简单工厂模式中加入了一个工厂接口,这样具体的不同的工厂实现类可以生成不同的类。简单工厂模式工厂类的数量是一个,而工厂方法模式具体的工厂类可以有一个或者多个。

 

  打个比方,

       1.简单工厂类就是就好比一座汽车工厂生产汽车,可以根据传入的参数“吉利”、“沃尔沃”、“大众” 不同来生产不同的汽车,此时工厂类仅仅一个。 

       2. 那工厂方法模式就不同了,他建立了“吉利”、“沃尔沃”、“大众”三座工厂来生产不同牌子的汽车,并且还加入了一个公有的抽象工厂类,除了定义创建抽象的生产方法外还定义这些生产出来的汽车的营销策略、上市日期等等不同牌子汽车的公有属性(可能公有属性的比喻不是十分恰当)。

    抽象工厂:提供一个接口,用于创建相关或者依赖对象的家族,而不需要明确指定具体类。

情况发生变化,工厂现在针对不同的牌子推出了系列产品:”吉利-A“、”吉利-B“、”吉利-C“、”沃尔沃-A“、”沃尔沃-B“、”沃尔沃-C“、”大众-A“、”大众-B“、”大众-C“。每批次都要相关系列产品。这是就要把不同牌子的汽车抽象出来,比如abstract class 吉利 {} ...

 

我们再用工厂方法对不同牌子的汽车进行实现,而不同的工厂类可以生产不同的系列产品,比如 吉利的工厂类定义了生产A、B、C全系列的方法

可以这样理解,抽象工厂可以认为是拥有不同生产线的汽车厂,而工厂方法属于其中的一条生产线。

 

工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。 
                              一个抽象工厂类,可以派生出多个具体工厂类。 
                              每个具体工厂类只能创建一个具体产品类的实例。 
抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 
                              一个抽象工厂类,可以派生出多个具体工厂类。 
                              每个具体工厂类可以创建多个具体产品类的实例。

  

  

分享到:
评论
1 楼 zyq070 2013-08-06  
楼主写的不错 可惜没人看  赞一个

相关推荐

    Java设计模式,并加上个人理解

    2. 简单工厂模式 (SimpleFactoryPattern) 3. 工厂方法模式 (Factory Method) 4. 单例模式 (Singleton) 5. 抽象工厂模式 (Abstract Factory) 6. 策略模式 (Strategy Pattern) 7. 适配器模式 (Adapter ...

    个人日记管理系统( C# 三层 简单工厂模式)

    确保D:\数据库备份文件bak 文件夹存在...把上次做的三层改成了工厂模式 由于我只有SQL数据库,工厂模式的具体体现 不是很有效果,因为两条分支得到类都是同一个类 本来该不同的数据库对应不同的类的。 大家理解就好啦~

    解析PHP工厂模式的好处

    初学PHP的设计模式,以下是我个人的理解一般我们实例化一个类会给它一些参数以便在其构析的时候可以根据不同的参数反馈出我们需要的结果。举例说明,以下是一个User类,非常简单:复制代码 代码如下:<?...

    java23种设计模式+23个实例demo

    1. 代码为根据个人对Design Pattern的学习理解写出, 2. 每个Pattern均是一个目录,其目录名即是Pattern的名字, 所有代码用JDeveloper 9i 和JBuilder 6.0编写,并编译、运行通过。 3. 示例中的类,方法的命名规则和...

    体系结构学习代码!特别详细丰富

     【附加例4.4】利用状态模式设计的中国个人所得税的计算系统  【附加例6.1】二手车拍卖系统最简单的设计与实现  【附加例6.2】二手车拍卖系统的非MVC设计与实现-两个类的情况 2. 教材各章实例代码 包括书中各...

    二十三种设计模式【PDF版】

    著名的 EJB 领域顶尖的专家 Richard Monson-Haefel 在其个人网站:www.EJBNow.com 中极力推荐的 GoF 的《设计模式》,原文 如下: Design Patterns Most developers claim to experience an epiphany reading this ...

    北大青鸟ACCP 6.0 软件开发初级程序员:使用Java理解程序逻辑.pdf

    该课程体系通过结合先进的多模式教学法,使学习者在掌握理论知识与工具的同时,具备良好的自我学习能力和个人素质,成为符合21世纪企业要求的IT人才。  ACCP 6.0是北大青鸟APTECH推出的最新软件工程师职业教育课程...

    基于遗传算法的排课系统,含论文(排课 遗传算法 设计模式 智能指针 报表)

    2.综合使用了模板方法、工厂方法、策略、原型、代理等设计模式,这些模式的使用都在代码里进行了标注。通过这些设计模式,便于代码理解、维护、扩展和升级。 缺点:代码虽然经过了一定优化,但还是有一部分地方没有...

    c#简单工厂、工厂方法与抽象工厂的区别分析

    所以我个人认为,简单工厂是一个工厂只生产一类的产品,面对的是具体的类,工厂方法是可以生产不同的产品,把公共的方法抽象出来,然后进行创建各种各样的产品.抽象工厂把几种产品划出共同的东西,把相互依赖的对象抽象...

    java 设计模式资料

    1. 代码为根据个人对Design Pattern的学习理解写出(>90%原创), 难免有错误的地方,希望大家指出。 2. 每个Pattern均是一个目录,其目录名即是Pattern的名字, 所有代码用JDeveloper 9i 和JBuilder 6.0编写,并...

    PHP 个人愿望众筹网站系统mysql数据库web结构apache计算机软件工程网页wamp计算机毕业设计网页源码

    PHP 个人愿望众筹网站系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 二、功能介绍 前台功能: 首页浏览 项目浏览 项目支持,查看收藏的...

    asp.net知识库

    2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 ...

    java简易版开心农场源码-designPattern:设计模式代码

    反复使用:这个不用过多解释,设计模式被使用太多了,上个系列spring源码当中就出现了很多模式,记忆中比较深刻的有模板模式,代理模式,单例模式,工厂模式等等。 多数人知晓:这个就不需要过多解释了。 分类编目:...

    PHP 公交公司充电桩管理系统mysql数据库web结构apache计算机软件工程网页wamp

    PHP 公交公司充电桩管理系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 二、功能介绍 (1) 普通员工具有的权限功能如下: 个人信息管理:...

    PHP 员工工资管理系统mysql数据库web结构apache计算机软件工程网页wamp计算机网页源码

    PHP 员工工资管理系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 二、功能介绍 (1)职务管理:对职务信息进行添加、删除、修改和查看 (2)...

    C#测试项目

    略水勿喷哈 注释比较全 梳理了一下个人对创建型模式的理解 应该还是适合初学者入门的

    基于SpringBoot+vueSpring Boot的装饰工程管理系统(源码+部署说明+演示视频+源码介绍).zip

    同时,还介绍了各个模块的功能和实现细节,帮助用户更好地理解和学习该系统。 总之,本资源为装饰工程管理提供了一个完整、实用、易于部署和学习的解决方案,适用于装饰公司、项目经理以及相关从业者使用。

Global site tag (gtag.js) - Google Analytics