【设计模式】外观和建造---总结


  • 外观模式
  • 背景:股票1、2、3、国债1、房地产1等这些都具有相同的方法:买入、卖出。于是,抽象出一个基金类,基金由以上类聚合而成,那么客户端只需认识基金即可,不需理解其内部,即股票、国债和房地产等。这样一来,就解决了对股票、国债、房地产不熟悉的人的买股问题,他们只需买基金即可,不需要具体知道买的是什么。
  • 特点:一组类似的类(股票一、二、三、国债、房地产)——聚合——一个类(基金)。客户端识别这一个类(基金),即可方便使用这一组类(股票一、二、三、国债、房地产)。
  • 用到的原则:依赖倒转原则和迪米特法则。
  • 优点:1、迪米特法则使得客户端简单;2、便于扩展。
  • 缺点:多定义了一个类。
  • 感受之所以叫外观模式,可能是因为此模式,不需你具体了解股票、国债、房地产等,只需你知道基金这个表层即可。


  • 建造者模式
  • 背景:为了避免“丢胳膊丢腿”的情况发生,使用了建造者模式。
  •     如何去避免呢?根据依赖倒转原则,“抽象不应该依赖细节,细节应该依赖抽象”。在这里是:人不应该头、身体、左右手、左右脚这些具体细节的画法,而应该具体画法依赖于人。通俗点说:你要求系统画个“胖人”出来,系统具体执行那个细节依赖于你这个抽象的“胖人”。
  • 特点:抽象一个Builder;ThinBuilder、FatBuilder等这些具体人,继承BuilderBuilder是Director的组成部分。
  • 原则:依赖倒转原则
  • 优点:1、客户端识简单;2、便于扩展。
  • 感受建造一个个不同的小人,详细的描述和生成小人分开。生成小人用到了详细描述。

  • 策略模式的特点:抽象一个CashSuper;CashNormal、CashRebate、CashReturn等具体的收费标准,继承CashSuper;CashSuper是CashContext的组成部分。
  •     大家看一下策略模式和建造者模式的UML图,就可以发现,他们是一样的。都用到了继承和聚合。

  • 敲代码感受
  •     学习设计模式过程中的感受,就拿学习建造者模式举例子。   
  •     有一天下午,这个模式我不知不觉竟然学习了2个小时。一方面时间过的好快,另一方面这个模式我好像还没有学到什么东西呢,时间就这么过去了。感觉有点低效。
  •     低效原因:一:建造者这个例子中生词比较多,刚开始产生了抵触心理;二:动手敲代码后,遇到意向不到的问题:比如:1、为什么在picturebox1的click事件中可以运行处结果,而在form-load就不可以?2、新建项目时,具体用哪个项目不太清楚?3、form1.cs和program.cs有什么联系?

  •     之前,为了使速度快一些,也为了首先理解一下设计模式,实际动手去实现功能的时候,比较少。到现在,我实际动手去做时,发现会遇到各种你意想不到的情况,解决这些问题时,我有两点感受:一、这些问题和设计模式具体模式的理解没有关系;二、这些问题可以锻炼你解决问题的能力。虽然,这个阶段是在学习设计模式,但是,敲代码的过程中,你不仅可以加深理解设计模式,而且也可以提高实际操作能力。所以,我们何乐而不为呢!还是多多去实现代码吧!(这句话主要是对我自己说!)
  •     敲代码还有好处,在敲代码的过程中可以让你集中精力,有助于理解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章