`
xiaoxiao_0311
  • 浏览: 23644 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

再读设计模式之工厂模式

阅读更多
解读工厂模式(本身应用了多态,用于解耦):工厂模式本身是为了不去了解具体产品类实现及初始化过程,而由工厂生产出产品实例。
1、简单工厂(simple Factory) :把对象(具有统一接口)的创建封装起来,不需要去了解具体类的实现情况,只需要向简单工厂传递参数,由工厂去根据参数来创建所需的具体实例。(优点:需求增加或改变时,只需要更改工厂类,而不需要改变产品类。 缺点:增加一个新产品类时,必须更改工厂类)
a)定义一个接口
b)各子类实现这个接口
c)定义一个工厂类,其中取实例方法会判断传入的参数而进行实例不同的对象
2、工厂方法(Method Factory pattern):为了解决简单工厂的缺点,工厂方法使在使用时实例化一个具体的产品工厂,这样在增加一个新产品时,只需要为其再创建一个产品工厂类,再使用时使用新产品工厂类。(优点:符合开闭原则。缺点:会造成工厂类泛滥。)
a)定义一个工厂接口
b)定义产品类接口
c)定义各产品类实现产品接口
d)为每个产品类定义工厂类,实现工厂接口
e)根据不同情况实例化不同的工厂类,以产生不同的产品类对象
适用场景: 
  当一个类不知道它所必须创建的对象的类的时候。
  当一个类希望由它的子类来指定它所创建的对象的时候。
当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

3、抽象工厂:可以解决工厂方法的工厂类泛滥问题,但同时也限制了产生一系列的产品。(优点:可以产生不同的产品流水线,但不同系列的产品具有相似性。缺点:不灵活)
a)定义一个工厂类接口,封装的方法产生一系列的产品
b)定义一系列产品类接口,不同产品继承不同接口。如:武器系列包含刀剑,铁制武器系列继承自武器系列,包含铁剑铁刀,而铁剑继承自剑,铁刀继承自铁刀。
适用场景:
一个系统要独立于它的产品的创建、组合和表示时。
一个系统要由多个产品系列中的一个来配置时。
当你要强调一系列相关的产品对象的设计以便进行联合使用时。
当你提供一个产品类库,而只想显示它们的接口而不是实现时。

三者比较:
1、在产品种类固定时,又不想去了解产品底层的实现细节,使用简单工厂,甚至都不用知道具体产品名称。
2、在产品种类不固定时,可以使用工厂方法
3、若产品是分代的,就可以使用抽象工厂。当产品只有一种时,退化为工厂方法
分享到:
评论

相关推荐

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

    在真正可复用的面向对象编程中,GoF 的《设计模式》为我们提供了一套可复用的面向对象技术,再配合 Refactoring(重构方法), 所以很少存在简单重复的工作,加上Java 代码的精炼性和面向对象纯洁性(设计模式是 java 的...

    java与设计模式书籍

    《Java设计模式》是软件开发领域的一本经典之作,作者刘伟将丰富的编程经验和深入的设计理念相结合,为我们呈现了如何在Java环境下应用设计模式的详细教程。这本书籍旨在帮助Java开发者提升代码质量和可维护性,通过...

    深入浅出设计模式 中文

    无论是想要提高个人编程技能,还是希望团队的代码风格更加一致,这本书都值得一读再读。通过深入学习和实践书中的内容,我们可以更好地应对软件开发中的各种挑战,写出更高效、更具扩展性的代码。

    Head.First设计模式_PDF.part1

    第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),作者称其为复合设计模式(这是作者自创的名称,并非四人组的标准名词),第13章介绍如何进一步学习设计模式,如何发觉新的设计...

    NET设计规范:约定、惯用法与模式

    4. **设计模式**:设计模式是解决常见软件设计问题的模板,包括单例模式、工厂模式、观察者模式等。这些模式提供了一套标准的解决方案,可以帮助开发者在面对复杂问题时有条不紊地进行设计。 5. **SOLID原则**:...

    工厂环境智能监控系统设计实例

    《工厂环境智能监控系统设计实例》是针对工业生产环境中的监测与控制问题,结合51单片机技术的一篇详细教程。在这个系统中,51单片机作为核心控制器,负责采集、处理和显示工厂环境的各项参数,如温度、湿度、烟雾...

    温故而知新,分享知识,快乐编码~.zip

    消费者模型网络一个类实现RPC框架设计模式创造型模式(Creative)工厂简单模式(Simple Factory)工厂方法模式(工厂方法)抽象工厂模式(Abstract Factory)静态工厂方法模式(Static Factory Method)创建者模式...

    《智能制造之路:数字化工厂》读书笔记模板.pptx

    智能制造是基于新一代信息技术,贯穿设计、生产、管理、服务等制造活动各个环节,具有信息深度自感知、智慧优化自决策、精准控制自执行等功能的先进制造过程、系统与模式的总称。智能制造的发展是第四次工业革命的...

    我读软件架构设计.rar

    2. **设计模式**:设计模式是软件设计中常见问题的解决方案,如工厂模式、单例模式、观察者模式等。这些模式有助于提高代码的可复用性和可维护性。 3. **分层架构**:这是一种常见的架构模式,将系统划分为多个独立...

    读代码整洁之道幻灯片笔记

    10. **设计模式**:运用设计模式可以解决常见的编程问题,如单例模式、工厂模式等。理解并合理应用设计模式可以提升代码的结构和灵活性。 11. **持续集成(CI)**:通过自动化构建和测试,确保代码的持续稳定。早期...

    工厂数据库管理系统.doc

    此工厂数据库管理系统设计涵盖了数据库系统的基础理论和实践,从需求收集到系统实现,再到安全性和维护,全方位锻炼了学生在数据库管理和软件开发方面的能力。通过使用SQL Server这样的数据库管理系统,学生可以学习...

    敏捷软件开发-原则、模式与实践

    4. **设计模式**:书中介绍了一系列经典的软件设计模式,如工厂模式、单例模式、观察者模式等,这些模式提供了解决常见问题的结构化解决方案,帮助开发者写出易于理解和维护的代码。 5. **TDD(测试驱动开发)**:...

    Design patterns for concurent objects

    抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。这种模式有助于将对象的创建与对象的实际实现分离,提高了代码的灵活性和可扩展性。 **示例...

    编写可读代码的艺术-完整版(带书签)_可读代码_

    9. **设计模式**:学习和应用设计模式可以解决常见的编程问题,使代码更易于理解和维护。例如,工厂模式、观察者模式和单例模式等。 10. **代码审查**:定期进行代码审查,可以帮助发现潜在问题,提升团队成员之间...

    敏捷软件开发原则,模式及实践(c#版)英文 PDF

    例如,工厂模式用于创建对象,单例模式用于确保类只有一个实例等。 #### 实践中的敏捷开发 - **测试驱动开发(TDD)**:这是一种编写高质量代码的方法,它要求开发者首先编写失败的测试案例,然后编写通过这些测试...

    程序设计经验杂谈

    8. **设计模式**:设计模式是解决常见问题的最佳实践,如单例模式、工厂模式、观察者模式等,熟练运用设计模式能提升代码复用性和扩展性。 9. **性能优化**:了解如何通过代码优化、数据库查询优化、内存管理等方式...

    模式学习

    例如,工厂模式允许我们创建对象而不必指定其具体类,从而使代码更加灵活;单例模式确保一个类只有一个实例,控制类的实例化过程;观察者模式则定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有...

    编写可读代码的艺术.rar

    书中可能会介绍一些常见的设计模式,如工厂模式、单例模式、观察者模式等,以及如何在实际项目中应用它们。 11. **代码风格与一致性**:统一的代码风格使代码看起来更整洁,有助于团队间的协作。书中可能会提供关于...

    webUI设计作业4

    设计师需考虑移动优先策略,先设计小屏幕布局,再扩展到大屏幕。同时,适应各种分辨率和屏幕比例,确保内容在任何设备上都能适配。 交互元素,如按钮、表单、滑块等,是用户与网站交互的桥梁。它们需要具有良好的...

    程序设计方法学的课件

    设计模式是解决常见编程问题的经验总结,如工厂模式、单例模式、观察者模式等。它们为特定场景提供了解决方案模板,帮助程序员在不同项目中复用和交流设计思路。 【程序设计优化】 程序设计优化旨在提高代码的运行...

Global site tag (gtag.js) - Google Analytics