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

【学习】设计模式-创建型模式(1)

    博客分类:
  • JAVA
阅读更多

 

创建型模式:

用来创建对象的模式,是对类的实例化过程的抽象化,它帮助一个系统独立于如何创建、组合和表示它的那些对象,即为了使体系结构更加清晰,有些软件在设计上要求当创建类的具体实例时,能够根据具体的语境来动态地决定怎样创建对象,创建哪些对象,以及怎样组织和表示这些对象。

 

按照生成目标的不同,创建型模式可以分为类的创建型模式和对象的创建型模式。

类的创建型模式:通过使用继承关系,将类的创建交由具体的子类来完成,这样就向外界隐藏了如何得到具体类的实现细节,以及这些类的实例是如何被创建和组织在一起的。

对象的创建型模式:通过把对象的创建委托给另一个对象来完成,可以根据语境动态地决定生成哪些具体类的实例,同时还可以向外界隐藏这些实例是如何被创建以及如何被组织在一起的细节。

 

所有创建型模式都有两个永恒的主旋律:

第一,它们都将系统使用哪些具体类的信息封装起来。

第二,它们隐藏了这些类的实例时如何被创建和组织的,外界对于这些对象只知道它们共同的接口,而不清楚其具体的实现细节。正因如此,创建型模式在创建什么(what),由谁(who)创建,以及何时(when)创建这些方面,都为设计者提供了尽可能大的灵活性。

 

对实例化过程进行分离和抽象有如下方法

对象委托:将对象的创建委托给专门的工厂对象,这样对于工厂所创建的对象就可以集中管理,并向客户端隐藏实际类型信息,客户端所知道的只是所使用(包含)对象的接口,这样当需要对这些对象进行类型、结构调整时就可以非常方便和统一。

类继承:通过在父类中创建对象的接口,从而当子类在需要的时候就可以通过重新实现该接口来创建其他类型的对象。

实例注入:客户端不需要知道所创建/使用的对象的具体类型,而只需要知道在实际运行的时候会得到这些对象的原型,当需要创建对象时仅克隆所得到的原型即可。

 

设计模式

描述

分离和抽象的方法

注意事项

单件(Singleton)

保证一个类仅有一个实例,自行实例化后提供一个该实例全局的访问点

 

1.构造函数privateprotected,防止外部实例化
2.
双层锁定实例化,防止多线程的多个实例化
3.
类要封装,防止被继承后派生添加实例
4.
饿汉、懒汉两种类型,各有千秋

抽象工厂(AbstractFactory)

提供一个接口,让该接口负责创建一系列"相关或相互依赖的对象",无需指定他们的具体类

对象委托

 

建造者(Builder)

将一个复杂对象的构建与其表示分离开来,使得同样的构建过程可以创建不同的表示

对象委托

各细节流程不同,但装配方式一致时,可以使用建造者模式以规范流程

工厂方法(FactoryMethod)

定义一个用于创建对象的接口,让子类决定实例化哪个类(使一个类的实例化延迟到子类)

类继承

1.包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关类,对于客户
端,去除了与具体产品的依赖
2.
使用添加新功能时,只要修改客户端代码

原型(Prototype)

指定创建对象的种类,然后通过拷贝这些原型来创建新的对象

实例注入

1.clone 浅拷贝,复制值类型,不复制引用类型
2.copy
深拷贝,值类型与引用类型都做复制

 

 

参考资料:

http://blog.csdn.net/qinysong/article/details/1009950

http://www.cnblogs.com/flashlm/archive/2009/02/10/CreationalPatterns.html

http://www.cnblogs.com/kid-li/archive/2006/10/25/539802.html

 

 

分享到:
评论

相关推荐

    设计模式1-创建型模式

    "设计模式1-创建型模式" 设计模式是软件设计中的一种解决方案,它提供了一种通用的设计方案,解决了面相对象系统中重复出现的设计问题。设计模式的学习和运用对软件系统开发有着非常重要的意义,它可以帮助开发者更...

    C++设计模式--基于Qt4开源跨平台开发框架

    创建型模式如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂模式(Abstract Factory),主要关注对象的创建过程,旨在减少类之间的耦合度。结构型模式如适配器模式(Adapter)、装饰器模式...

    最新设计模式超级详解+Tomcat架构源码分析+Spring源码分析 资深级设计模型课程

    最新设计模式超级详解课程,课程深入浅出的探讨了设计模式总览,创建型模式、结构型模式、行为模式的技术教学堪称经典。Spring源码分析,web源码分析,Tomcat架构...├─day01-总览设计模式-07-创建型模式-工厂-工厂

    C#面向对象设计模式纵横谈-创建型模式

    在编程领域,面向对象设计模式是一种经过验证的解决常见问题的方法论,它们是软件开发中的最佳实践。创建型设计模式是面向对象设计模式的一种类型,主要关注...因此,对创建型模式的深入学习对于C#开发者来说至关重要。

    设计模式---桥接模式

    桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件工程中被广泛应用于处理组件之间的耦合问题,特别是当需要为同一抽象提供多种实现或者需要独立地改变它们时。 ...

    设计模式-Java语言中的应用

    设计模式通常分为三类:创建型模式(如工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式),结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)以及行为型模式(如...

    java设计模式---诙谐易懂版

    设计模式一般分为三大类:创建型模式、结构型模式和行为型模式。 3. 根据文件内容,诸葛亮给赵云的三个锦囊妙计可以用策略模式来实现。每个妙计对应一个实现了策略接口的具体策略类。例如,BackDoor类实现了...

    C++设计模式-基于QT4开源跨平台开发框架 源码

    设计模式分为三大类:创建型模式(如单例、工厂方法、抽象工厂)、结构型模式(如代理、装饰器、适配器)和行为型模式(如观察者、策略、命令)。这些模式都是在特定上下文中解决设计问题的模板,它们可以提高代码的...

    设计模式之创建型模式

    总之,"设计模式之创建型模式"这个资源包为学习创建型设计模式提供了丰富的材料。无论是工厂模式还是单态模式,它们都是软件设计中的重要工具,能够帮助你编写出更加灵活、可扩展的代码。通过深入学习和实践,你可以...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    1. **创建型模式**:这类模式主要关注对象的创建过程,它们提供了一种在不指定具体类的情况下创建对象的方法,使得系统更加灵活和可扩展。 - 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点...

    从哲学角度学习设计模式-抽象工厂

    在众多设计模式中,“抽象工厂”(Abstract Factory)模式是一种创建型模式,它提供了一个接口,用于创建相关或依赖对象的家族,而不必指定它们的具体类。这一模式深受哲学的影响,特别是“形而上学”的概念,探讨了...

    JAVA设计模式-chm版

    三、学习设计模式的方法: 1. 阅读经典书籍,如《设计模式:可复用面向对象软件的基础》(GOF设计模式)。 2. 实践编程,将所学应用到实际项目中。 3. 分析和重构现有代码,找出并应用设计模式。 4. 参与讨论和分享...

    软件设计模式--填空题+简答题(复习7).rar

    2. **设计模式分类**:设计模式通常分为三类:创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代...

    Java设计模式----通俗易懂版

    1. 创建型设计模式: - 单例模式:保证一个类只有一个实例,并提供全局访问点。 - 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂模式:提供一个创建一系列相关或相互依赖...

    26种设计模式-----pdf

    设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。创建型模式主要关注对象的创建过程,比如单例模式(Singleton)、工厂模式(Factory)和抽象工厂模式(Abstract Factory)。它们提供了一种在不指定...

    设计模式-王翔 全本

    设计模式分为三大类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的创建,如单例模式(Singleton)、工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory),它们旨在提供一种创建对象的...

    JAVA设计模式--程序设计--反射--注解--泛型

    设计模式包括创建型模式(如单例、工厂方法、抽象工厂等)、结构型模式(如适配器、装饰器、代理等)和行为型模式(如策略、观察者、职责链等)。这些模式提供了良好的可复用性和可扩展性,帮助开发者遵循“开闭原则...

    c++设计模式-工厂方法模式

    描述中的“创建型模式-工厂方法模式-最简单的源码-qt工程”表明,这个压缩包可能包含了一个基于Qt框架的C++项目,该项目展示了工厂方法模式的简单应用。Qt是一个跨平台的应用程序开发框架,广泛用于GUI编程,但也...

Global site tag (gtag.js) - Google Analytics