`

创建模式总结

阅读更多
一、 创建模式的相关概念(学会封装)
1. 创建模式
(1) ~是对类的实例化过程的抽象化;
(2) 原因:系统在创建对象时,要创建哪些对象,如何创建对象需要动态地决定。
(3) 最终目的:创建模式描述怎样构造和封装对象创建的动态决定
2. 创建模式相关的设计原则
(1) 依赖倒转原则:
即:面向抽象的编程,在创建模式中反映出来的就是在客户端只对是面向接口/抽象类的编程,而不必具体到具体实现类。进一步地讲,也就是说类的实例化要推迟到其子类中。而这也是封装的一个基本要求。
其基本的实现方法,就是正确使用继承关系。这也是一种静态的方法,即:在编译阶段就确定的东西。
(2) 组合/聚合原则
在创建模式中,就是将一个对象的创建过程动态地委派给另外的一个对象。但其所依附的类仍然要遵循“依赖倒置”原则,因为只有这样才能真正实现面对抽象的编程。
总之,创建模式的关键:封装。而这也是学会面向对象与抽象的编程最基础的东西。封装做的不好,接口隔离、面向抽象的编程以及对象/类的结构模式及行为模式就无从谈起。因为只有封装做好了,才有可能做进一步的改进,而如果封装,其改进将没有了可实施的对象。
二、 常用的创建模式总结
1. 工厂模式
工厂模式重点强调的是如何将对象的创建过程按照用户/客户需求程度的复杂性而分门别类地隐藏起来其具体的创建细节。
(1) 简单/静态工厂
简单的if/else将产品创建的控制逻辑封装在工厂方法中,并由一个具体工厂负责所有产品的创建过程。所以,简单工厂只是对简单的控制逻辑的封装。只能实现一部分“面向抽象"的编程,即:隐藏了要创建的产品的具体实现过程,但所使用的工厂则是具体的,不是抽象的。
(2) 工厂方法
主要目的:将每一种产品的实例化时复杂的前提条件的初始化过程封装起来。而不只是简单地对静态工厂模式的改进。
此外,在客户端用户根本不知道具体的工厂是什么,所以在客户端决定要使用何种具体工厂时完全可以使用简单工厂的方法来做业务逻辑的判断。
(3) 抽象工厂
简称:工具箱模式
对一组相关产品的创建过程的隐藏。在表现形式上,虽然很像是工厂方法的扩展,但其出发点是根本不同的。其最终目的在于提供完整的整套相关产品的实例化过程,而不是完成每一类产品实例化时的复杂的初始化条件设置等目的。

总之:工厂模式,隐藏的是对象的创建过程,以“封装”为基础,完成面向抽象的编程。
2. 单例/多例模式
单例/多例模式重点强调的是对创建出来的对象的使用的限制,而对象本身的创建过程相对于工厂模式则非常简单。
(1) 单例模式
三个条件:
a) 类有且仅有一个实例
b) 类自行创建其实例(自行负责类自己的实例的初始化)
c) 类自行向系统提供其所创建的实例(系统对该类仅有的一个实例的使用,要受到此类的控制)
(2) 多例模式
一般情况是,一个类有多个自己的实例,但也是有限制的,而不是没有任何限制的。在多例模式中,一个类要自行创建、管理其自己的实例,其根本目的还是通过类来完成对类的实例的使用完成全局控制。只不过,多例模式生成的多个实例其状态或类型是有区别的。而如果将其类型/状态隐藏在内部的话,也可将多例类改造成单例模式,此时就要在单例中使用聚类集合来管理另一个类的多个实例(也就是多例类中所生成的多个实例)。


0
0
分享到:
评论

相关推荐

    JAVA设计模式(创建模式 结构模式 行为模式)

    本资源主要涵盖了创建模式、结构模式和行为模式三大类,每种模式都是面向对象设计的核心部分。 创建模式主要用于解决对象的创建问题,使得对象的创建过程更加灵活,易于扩展。其中: 1. 工厂模式(Factory Pattern...

    C#面向对象设计模式纵横谈-1.Singleton 单件(创建型模式)

    设计模式是软件工程中的宝贵经验总结,Singleton模式作为其中一种,可以帮助开发者编写更加健壮和易于维护的代码。然而,需要注意的是,过度使用Singleton可能会导致代码耦合度增加,不易测试,因此在实际应用中应...

    C#面向对象设计模式纵横谈(25):设计模式总结

    本篇文章将对一系列重要的C#面向对象设计模式进行总结,帮助开发者更好地理解和应用这些模式。 1. 工厂模式:工厂模式是一种创建型设计模式,提供了一种创建对象的最佳方式,通过抽象工厂接口,避免了代码与具体类...

    李建忠 C#面向对象设计模式纵横谈(25):设计模式总结

    总结来说,李建忠先生的“设计模式总结”涵盖了C#中广泛使用的设计模式,强调了它们在实际项目中的应用价值。理解并熟练运用这些模式,对于提升C#开发者的专业素养和项目质量具有重大意义。无论是初学者还是经验丰富...

    设计模式总结

    设计模式总结 设计模式是软件设计中一种常见的解决方案,它们可以帮助开发者写出更加灵活、可维护、可扩展的代码。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 创建型模式 创建型模式关心对象...

    设计模式总结.pdf

    本总结文档涵盖了所有的设计模式,并对常用的模式进行了详细解释,非常适合程序员在面试前快速复习以及日常学习使用。 文档中提到的六大设计原则,包括单一职责原则、里氏替换原则、接口隔离原则、迪米特法则、开闭...

    3.java设计模式-创建者模式-抽象工厂模式.pdf

    总结来说,文档通过组装电脑的例子详细介绍了抽象工厂模式的概念、应用场景以及实现方式。通过定义产品接口和具体产品类,以及一个工厂类,我们可以灵活地为客户提供不同品牌和型号的配件,并保证这些配件之间的兼容...

    23种软件设计模式总结

    在Java编程中,23种经典的设计模式被广泛认可并应用,这些模式分为三大类:创建型、结构型和行为型。 1. **创建型模式**: - **单例模式(Singleton)**:保证一个类只有一个实例,并提供全局访问点。 - **工厂...

    Java与模式 (清晰书签版) 创建模式、 行为模式、 结构模式 模式 清晰3

    《Java与模式 (清晰书签版)》是一本深度探讨Java编程中设计模式的书籍,主要涵盖了创建模式、行为模式和结构模式三大类别。设计模式是软件开发中的宝贵经验总结,它提供了一种在特定场景下解决问题的标准模板,使得...

    java中常用设计模式总结心得

    2. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建对象时,我们不会对客户端暴露创建逻辑,而是引用一个共同的接口来指向新创建的对象。这有助于减少代码的...

    设计模式总结笔记设计模式总结笔记

    ### 设计模式总结笔记 #### 一、概述 设计模式是一种在特定上下文中解决软件设计问题的方案。它并不是一种现成的代码片段或者框架,而是一种指导思想,帮助开发者理解如何更好地组织代码来解决问题。设计模式可以...

    lua设计模式总结

    创建型模式 1、简单工厂模式lua实现 2、工厂方法模式lua实现 3、原型模式lua实现 4、建造者模式lua实现 5、单例模式lua实现 6、抽象工厂模式lua实现 结构型模式 1、装饰模式lua实现 2、代理模式lua实现 3、外观模式...

    Java 设计模式总结 Java 设计模式总结

    设计模式总结主要包括创建型、结构型和行为型这三大类,每类模式都有其特定的应用场景和目标。 1. 创建型模式(创建对象的模式) - 工厂方法模式:允许将对象的创建过程推迟到子类中,使得代码更具可扩展性和灵活...

    设计模式自己总结一句话描述

    创建型模式,共五种: 工厂方法模式、抽象工厂模式、单例模式、构建者模式、原型模式。 结构型模式,共七种: 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种...

    设计模式精心总结

    4. 建造者模式(Builder):建造者模式用于创建复杂对象,它允许用户只通过指定复杂对象的类型和内容就可以创建它们,而避免了直接实例化类。 5. 原型模式(Prototype):原型模式用于创建重复的对象,同时又能保证...

    Java设计模式总结

    这里主要针对标题“Java设计模式总结”以及描述中提及的资源进行深入阐述。 1. **设计模式的概念**: 设计模式并非具体的代码或库,而是一种在特定上下文中解决常见问题的模板。它们描述了如何在面向对象设计中以...

    23种设计模式总结及案例.pdf

    在《23种设计模式总结及案例》中,通常会涵盖以下主要的设计模式类型: 1. 创建型模式:这类模式主要关注对象的创建过程,使得系统在不指定具体类的情况下创建对象,提高代码的灵活性。包括单例模式(Singleton)、...

    工厂设计模式总结

    工厂设计模式是面向对象设计中的一种创建型模式,它的主要目的是为了解耦对象的创建过程,使得客户端代码不再直接通过new关键字创建对象,而是通过一个工厂类来获取所需的对象。这样做的好处在于,当需要添加新的...

    java:单例模式 作为对象的创建模式

    这种模式通常用于那些需要频繁实例化然后销毁,或者创建代价昂贵的对象,比如线程池、缓存、对话框、注册表设置、日志对象等。 单例模式的特点可以总结为以下三点: 1. **唯一性**:一个类只能有一个实例。这是...

    设计模式总结.docx

    工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在PHP中,工厂模式有三种形式:简单工厂模式、工厂方法模式和抽象工厂模式。它们都旨在解耦对象的创建和使用,使得更换或扩展产品类变得容易。例如...

Global site tag (gtag.js) - Google Analytics