设计模式入门(原创)

原创 2004年07月14日 18:22:00

什么是设计模式:
      20世纪60年代的软件危机使得人们开始重视软件工程的研究。起初,人们把软件设计的重点放在数据结构和算法的选择上。随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明也显得越来越重要。面对日益复杂的软件系统,人们开始认识到,要真正实现软件的工业化生产方式,达到软件产业发展所需要的软件生产率和质量,软件复用是一条现实可行的途径。

        设计模式第一次是由架构设计师 Christopher Alexander 在他所著的 A Pattern Language: Towns, Buildings, Construction(Oxford University Press,1977)一书中提到的。

        他引入了这一概念,并称为模式 ― 对于反复出现设计问题的抽象解决方案 ― 这一概念吸引了其它领域中一些研究人员的注意,特别是二十世纪八十年代中后期,那些开发面向对象的软件人员。

        Christopher Alexander 在他的书中指出:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”

       内行的设计者知道:不是解决任何问题都要从头做起。他们更愿意复用以前使用过的解决方案。当找到一个好的解决方案,他们会一遍又一遍地使用。这些经验是他们成为内行的部分原因。

        小说家和剧本作家很少从头开始设计剧情。他们总是沿袭一些业已存在的模式,像“悲剧性英雄”模式(《麦克白》、《哈姆雷特》等)或“浪漫小说”模式(存在着无数浪漫小说)。

        1995年,《Design Pattern》(中译“设计模式”)一书问世,成为面向对象编程中使用模式化方法的开创性著作。
       这本书对于软件实践中的一些不断变换面孔重复出现、但特征和解决方案的本质却十分类似的问题进行了总结归纳,提炼出23个具有代表性的模式。


       设计模式本身并不是一种具体的“技术”,它讲述的是思想。它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,还让开发人员能够真正掌握接口或抽象类的应用。更重要的是,该书提炼的这些设计模式反复强调的宗旨是尽量提高程序的使用率,让程序尽可能的可重用。

设计模式对于面向对象设计是一种有用的工具。
1. 模式提供了在一定的环境中解决某一问题的方案。
2. 模式以一种系统的方式获取经验丰富的设计人员的经验,并使之成为非专业人士可以使用的设计工具和学习工具。
3. 模式类别作为术语的词汇表,帮助理解公共的但又复杂的设计问题的解决方案。

单态设计模式举例

单态设计模式:采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供了一个取得其对象实例的方法。(P113)
  
举例:我们设计了一个钟表类, 并且要求程序中始终保持只有一个时钟对象,这个程序很大, 并不是一个人完成的。也就是说,如果只是一个人, 可以人为地记住只把时钟类实例化了一次, 可是,由于还有许多partner共同来实现这个程序 ,因此,必须想办法从程序设计上来保证它的实现,那么怎么做的呢?

程序设计如下:
class Singleton {
   private static Singleton _instance = null;
   protected Singleton() {
   }
   public static Singleton instance() {
       if (_instance == null) {
          _instance = new Singleton();
       }
       return _instance;
   }
}
程序解释:
       在这里, Instance方法是static 类型, 说明可以不用创建对象实例就可以实现对它的调用,而_instance是static类型的变量,即:类变量,它只与类相关。
       在静态Instance方法中使用惰性初始化,使得它只有第一次被调用时才创建唯一的Singletion实例。而构造函数可以定义为 private型,也可以定义为 protected 型, 这样就可以在子类的函数中重用它, 此时,如果其他人想用Singleton类实例化一个对象,就会得到一个编译错误,因为他只能通过Instance函数去访问第一次调用时所产生的唯一的对象_instance。

设计模式之禅(第二版)

  • 2017年11月20日 14:11
  • 18.18MB
  • 下载

JavaScript设计模式与开发实践——JavaScript的多态

“多态”一词源于希腊文polymorphism,拆开来看是poly(复数)+ morph(形态)+ ism,从字面上我们可以理解为复数形态。多态的实际含义是:同一操作作用于不同的对象上面,可以产生不同...
  • turingbooks
  • turingbooks
  • 2015-05-25 16:32:27
  • 1842

java设计模式_原创

  • 2008年05月09日 16:57
  • 404KB
  • 下载

大话设计模式 体会(一)

受高人推荐,阅读《大话设计模式》,自己读了一下,感觉大话设计模式真的特别好,通俗易懂,实用性强。而我又处在初级程序员向中高级程序员转型的阶段,这本身启发了我,什么是优质代码,如何写出优质代码。为了自己...
  • yx1166
  • yx1166
  • 2015-08-14 23:38:20
  • 516

Java设计模式之初学者笔记——设计模式基础讲解

设计模式基础讲解
  • u012817635
  • u012817635
  • 2016-04-06 20:11:14
  • 3375

黑客技术—QQ窃取

刚开发了一个欺骗形式QQ盗号程序,可能诸位很感兴趣,不妨拿出来给大家玩玩,仅供学习研究,请勿模仿作恶。 1)请点击本程序,程序不作出任何反应,在后台已启动。 2)如果你的电脑装有360,那么程序将不...
  • u012884280
  • u012884280
  • 2013-11-22 08:55:21
  • 1774

菜鸟谈VBA最最基础入门

  • 2010年07月16日 09:36
  • 1.39MB
  • 下载

菜鸟谈VBA最最基础入门《原创》.ppt

  • 2015年11月16日 15:26
  • 1.26MB
  • 下载

游戏开发入门(二)游戏中的设计模式

视频链接:游戏开发入门(二)游戏中的设计模式(3节课 时常:约2小时40分钟) 该视频主要围绕游戏中常见的设计模式展开讲解并实践,需要大家多多实践与理解 笔记与总结(请先学习视频内容): 1...
  • u012999985
  • u012999985
  • 2018-01-17 22:02:52
  • 1611

设计模式入门

  • 2016年02月09日 21:05
  • 550KB
  • 下载
收藏助手
不良信息举报
您举报文章:设计模式入门(原创)
举报原因:
原因补充:

(最多只允许输入30个字)