zoukankan      html  css  js  c++  java
  • 设计模式 创建型模式

    1. 单件模式

    • 意图
      保证一个类仅有一个实例,并提供一个访问它的全局访问。
    • 实现要点
      Singleton模式是限制而不是改进类的创建。
      Singleton类中的实例构造器可以设置为Protected以允许子类派生。
      Singleton模式一般不要支持Icloneable接口,因为这可能导致多个对象实例,与Singleton模式的初衷违背。
      Singleton模式一般不要支持序列化,这也有可能导致多个对象实例,这也与Singleton模式的初衷违背。
      Singleton只考虑了对象创建的管理,没有考虑到销毁的管理,就支持垃圾回收的平台和对象的开销来讲,我们一般没必要对其销毁进行特殊的管理。
      理解和扩展Singleton模式的核心是“如何控制用户使用new对一个类的构造器的任意调用”。
    • 详见
      http://terrylee.cnblogs.com/archive/2005/12/09/293509.html

    2. 简单工厂模式

    3. 工厂方法模式

    • 意图
      定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
    • 总结
      Factory Method要解决的就是对象的创建时机问题,它提供了一种扩展的策略,很好地符合了开放封闭原则。
    • 详见
      http://terrylee.cnblogs.com/archive/2006/01/04/310716.html 

    4. 抽象工厂模式

    • 意图
      提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
    • 实现要点
      抽象工厂将产品对象的创建延迟到它的具体工厂的子类。
      如果没有应对“多系列对象创建”的需求变化,则没有必要使用抽象工厂模式,这时候使用简单的静态工厂完全可以。
      系列对象指的是这些对象之间有相互依赖、或作用的关系,例如游戏开发场景中的“道路”与“房屋”的依赖,“道路”与“地道”的依赖。
      抽象工厂模式经常和工厂方法模式共同组合来应对“对象创建”的需求变化。
      通常在运行时刻创建一个具体工厂类的实例,这一具体工厂的创建具有特定实现的产品对象,为创建不同的产品对象,客户应使用不同的具体工厂。
      把工厂作为单件,一个应用中一般每个产品系列只需一个具体工厂的实例,因此,工厂通常最好实现为一个单件模式。
    • 总结
      抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,运用抽象工厂模式的关键点在于应对“多系列对象创建”的需求变化。一句话,学会了抽象工厂模式,你将理解OOP的精华:面向接口编程。
    • 详见
      http://terrylee.cnblogs.com/archive/2005/12/13/295965.html

    5. 建造者模式

    • 概念
      将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
    • 适用场合
      创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。
      要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。
    • 详见
      http://www.cnblogs.com/BeyondAnyTime/archive/2012/07/19/2599980.html

    6. 原型模式

    • 意图
      采取复制原型对象的方法来创建对象的实例
    • 注意
      因为使用原型模式的时候每个类都要具备克隆方法。如果在类的设计之初没有很好的规划,等使用很久了才想到克隆,就可能非常的麻烦,尤其是在设计到深层次复制的时候,因为此时牵扯到很多因素,而且工作量非常大。
    • 详见
      http://www.cnblogs.com/guoshiandroid/archive/2010/07/03/1770357.html
  • 相关阅读:
    Python变量状态保持四种方法
    Python参数基础
    Django Form 表单
    Python开发第四篇
    Python开发第三篇
    设计模式(一)概述
    Python自学之路——自定义简单装饰器
    Python开发第二篇
    Python开发第一篇
    Python核心编程——多线程threading和队列
  • 原文地址:https://www.cnblogs.com/raysbo/p/899125.html
Copyright © 2011-2022 走看看