设计模式专题.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计模式专题

Command 模式 Command 模式通过将请求封装到一个对象(Command)中,并将请求的接受者存放到具体的 ConcreteCommand 类中(Receiver)中,从而实现调用操作的对象和操作的具体实现者之间的解耦。 实际上,雇员、经理、学生描述的是一种角色,比如一个人是经理必然是雇员,另外一个人可能是学生雇员,在上面的设计中,一个人无法同时拥有多个角色,是雇员就不能再是学生了,这显然是不合理的。 错误源于把角色的等级结构与人的等级结构混淆起来,误把Has-A当作Is-A。 解决办法 6.迪米特法则(LoD) 迪米特法则(Law of Demeter或简写LoD)又叫最少知识原则(Least Knowledge Principle或简写为LKP),也就是说,一个对象应当对其它对象有尽可能少的了解。 Singleton 模式 工厂模式 抽象工厂模式 Prototype Pattern(原型模式) 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.   Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。 Builder Pattern 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要讲的建造者模式。 Adapter模式 将一个类的接口转换成客户希望的另外一个接口,解决两个已有接口之间不匹配的问题。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 (1)class adapter (2)object adapter Facade模式 Proxy模式 为其他对象提供一种代理以控制这个对象的访问。 Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层,这个访问层也叫代理。 Flyweight模式 运用共享技术有效地支持大量细粒度的对象。 Decorator模式 动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活. Strategy模式 定义一系列的算法,把它们一个一个封装起来,并且使它们可相互替换。Strategy模式使算法可独立于使用它的客户而变化。 Strategy适合下列场合: 1.以不同的格式保存文件; 2.以不同的算法压缩文件; 3.以不同的算法截获图象; 4.以不同的格式输出同样数据的图形,比如曲线 或柱状图等。 Observer模式 在日常生活中,常常会用这样的情形:当某件事发生时,应该通知所有的相关者。例如,如果我们的课程改变时间或地点,就应该通知所有选修了这门课程的同学。 在软件设计中,也有类似的问题:当一个对象的状态发生变化时,如何能够通知与其相关的所有其他对象,而不用修改该对象的代码? 报纸订阅 发行站 订阅者1 订阅者n 退订者 新报纸 发行站+订阅者们=Observer Pattern 观察者模式定义了对象间的一对多依赖关系。当一方的对象改变状态时,所有的依赖者都会被通知并自动被更新。 在观察者模式中,被依赖的一方叫做目标或主题(Subject),依赖方叫做观察者(Observers)。 目标 观察者1 观察者n 通知 观察者模式一种更好理解的名字是:发布-订阅模式(Publish-Subscribe) Chain of Responsibility模式 《设计模式》中给它的定义如下:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 从定义上可以看出,责任链模式的提出是为了“解耦”,以应变系统需求的变更和不明确性。 Chain of Responsibility模式 Memento模式 Memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态. 设计模式专题 从一道面试题谈起 请用C++、Java、C#或VB.NET任意

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档