设计模式入门(原创)

原创 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。

手把手教你玩转QQ的原创表情

QQ的原创表情非常的可爱,做得比较精致,深受广大QQ用户的喜爱;但怎么将这些表情保存下来,好让我可以在别的地方用呢? 乖乖牛在线将从不同的视角,为你解析QQ原创表情的存储、互通、保护的机制;熟悉了这些...
  • TragicGuy
  • TragicGuy
  • 2015年10月23日 13:58
  • 1101

通过图像转换软件打造95%原创文章--真的可以告别伪原创(有点扯)

通过图像转换软件打造95%原创文章--真的可以告别伪原创   满大街都在吆喝,SEO优化什么最重要?“内容为王,外链为皇”。。。对,我也是这么认为的,可是能每天坚持写原创的又有几个呢?我相信我这篇文...
  • wuxinliulei
  • wuxinliulei
  • 2013年08月27日 13:09
  • 990

伪原创文章的方法

1.修改标题 标题是搜索引擎读取相关数据的第一步,因此,伪原创内容页的全新标题,搜索引擎而言对这个页面的评价也就高些。具体 的操作技巧有,添加或删减词语词组、换汤不换药(全新的描述方式,意义雷同)、同...
  • zongcaihui
  • zongcaihui
  • 2015年10月12日 15:18
  • 245

三国杀 原创之魂2016 武将技能

岑昏 吴 体力3 【极奢】出牌阶段,若你的手牌上限大于0,你可以摸一张牌,然后你本回合的手牌上限-1。结束阶段开始时,若你没有手牌,则你可以横置至多X名角色的武将牌(X为你的体力值)。 【链祸】锁...
  • cmershen
  • cmershen
  • 2016年09月05日 15:12
  • 3094

盾灵原创文章投稿系统后台绕过漏洞

代码审计之盾灵原创文章投稿系统后台绕过漏洞
  • Luosec
  • Luosec
  • 2017年06月13日 15:04
  • 426

个人订阅号认证步骤,个人公众号如何认证看这里巧妙绕过腾讯规则2天搞定认证

如何绕过腾讯规则,巧妙认证个人订阅号。
  • wqbbt0415
  • wqbbt0415
  • 2017年11月28日 11:03
  • 266

文章原创度!为什么抄袭者的网站更容易收录?

并不是你网站有文章,是你自己写的,就一定会被搜索引擎认为这是一篇原创文章,因为其中还有很多技术方面的问题,搜索引擎还未能解决。记得我曾经在一个网站每天更新一篇文章,一篇文章的字数只有100字左右,但是...
  • ilision
  • ilision
  • 2016年07月24日 22:44
  • 803

如何让百度等搜索引擎收录转载或伪原创的内容

转载的模式,对于部分站长来说,会配置制止搜索引擎收录,也即是在文章里加之nofollow属性,还有一种便是伪原创内容,大话说,部落也每每性的转载,固然,网站中的伪原创也不在少数,只不过绝大一小部分,都...
  • liuxuekai
  • liuxuekai
  • 2016年07月18日 17:05
  • 602

网站入侵学习入门到高手所有重点难点视频推荐

今天看到一基友 Mayter/baojin 总结了下入侵学习的视频  我顺便把视频链接也放上来省得想学习入侵的童鞋去找了 现在学入侵了好多了 学习的东西都给出来了 以前我们学习入侵的时候...
  • wljlwyq
  • wljlwyq
  • 2014年10月06日 18:38
  • 2810

个人静态网页的实现

该网页是期末作业,和大家分享下相互学习。      效果图如下: 喜欢的可以点击这里下载哦...
  • Mrain2
  • Mrain2
  • 2017年12月19日 10:04
  • 19
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式入门(原创)
举报原因:
原因补充:

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