设计模式浅谈

1,什么是设计模式
设计模式定义
“每个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复劳动”
 -------------Chrisyopher Alexander
“对被用来在特定场景下解决一般设计问题的类和相互通讯的对象的描述”
    ------------- Gof(Gang of four)
设计模式至少包括待解决问题和对应解决方案两个要素

2,什么时候使用设计模式
一般都是在详细设计阶段,设计模式一般只涉及类或者对象。
但mvc模式用于架构阶段。

3,使用设计模式有什么好处
三大类23种设计模式都是作者根据很多人的实践总结而来,每种模式都是相关问题的解决方案,我们可以直接使用,而不是从头开始.
同时,设计模式也可以成为交流或者设计的词汇.

4,如何使用设计模式
分析场景和面临的问题,找到变化的因素; 查找模式的意图部分,选择合适的模式;研究模式的要素和交互匹配你的场景;注意:设计模式的自动化,反模式,性能模式

5,使用设计模式注意什么
目前对设计模式的讨论没有以前那么热,主要原因是目前开发中都会使用框架,写框架调用的代码;但框架中使用多个设计模式,确是不可不知.
设计模式比直接的硬编码性能会有些须损失;针对系统面对的主要矛盾和重要变化,防止过设计.
但设计模式仍然非常重要,理解设计模式对于架构模式的理解是有帮助的,因为他们的核心思想都是:元素+交互.但粒度不同.
另外,框架未必能够完全满足我们的要求,我们可能需要修改,甚至扩展框架,理解设计模式,有助于理解框架.

6,设计模式有哪些
分三类,大致23个设计模式

7,常用设计模式介绍

抽象工厂(创建型):
英文: Abstract Factory
客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。
缺点是当产品修改时,工厂类也要做相应的修改。
最明显的例子是视感标准的切换。

单键模式(创建型):
英文: Singleton
单键模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单键模式。
单键模式只应在有真正的“单一实例”的需求时才可使用。
单键模式实际上是全局变量的c++版本。
单键模式其实并不象我们想象的那样简单,这一点在<<c++设计新思维>>中有详细的阐述。

桥梁模式(结构型):
英文: Bridge
将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。
最明显的例子是跨平台的窗口系统的例子,比如浏览器.

合成模式(结构型):
英文: Composite
合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。
合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。

命令模式(行为型):
英文:Command
命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否执行,何时被执行以及是怎么被执行的。系统支持命令的撤消。
对于循环调用,Command可能是一种解决方案。

解释器模式(行为型):
英文:Interpreter
给定一个语言后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式将描述怎样在有了一个简单的文法后,使用模式设计解释这些语句。在解释器模式里面提到的语言是指任何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表文法的命令类的等级结构,也就是一系列的组合规则。每一个命令对象都有一个解释方法,代表对命令对象的解释。命令对象的等级结构中的对象的任何排列组合都是一个语言。

迭代子模式(行为型):
英文:Iterator
迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象,每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。

观察者模式(行为型):
英文: Observer
观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。


8,相关思考
架构设计和设计模式:核心思想相同(元素+交互),粒度和层次不同.

参考资料:
<<设计模式>>
<<c++设计新思维>>
<<架构设计培训-温昱.pdf>>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值