摘要: 组合模式(Composite)将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。根据上图可以看出Component中纯虚函数Add、Remove。也就是说在Leaf类当中也有Add、Remove,树叶不是不可以再长分枝吗?呵呵~教材上把这种方式叫做透明方式。透明方式:也就是说在Component中声明所有用来管理子对象... 阅读全文
posted @ 2010-10-12 20:30 奋斗の机器 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 备忘录(Memento)模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。把保存的细节给封装在了Memento中了,任何时候要更改保存的细节也不用影响客户端了。Memento模式比较适合用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,Originator可以根据保存的Memen... 阅读全文
posted @ 2010-09-08 20:02 奋斗の机器 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 适配器模式(Adapter): 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。简单地说,就是需要的东西就在面前,但却不能使用,而短时间又无法改造它,于是就想办法适配它。适配这个词可以这样理解。比如,有些国家用110V电压,而我们国家用的是220V,但我们的电器,比如笔记本电脑是不能什么电压都能用的,但国家不同,电压可能不相同... 阅读全文
posted @ 2010-09-08 19:57 奋斗の机器 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 先唠叨一句:面向对象设计其实就是希望做到代码的责任分解。状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。先赏张图:状态模式的好处与用处:状态模式的好处是:将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。将特... 阅读全文
posted @ 2010-08-27 23:21 奋斗の机器 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 先说下之前用到过的【工厂方法模式】是定义一个用于创建对象的接口。让子类决定实例化哪一个类。再说【抽象工厂模式(Abstract Factory)】,提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。实际应用代码工程结构:(1)产品A ProductA.h(2)产品B ProductB.h(3)工厂类 Factory.h(4)客户端 AbstractFactoryApp.cpp(... 阅读全文
posted @ 2010-08-26 22:55 奋斗の机器 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 观察者模式,又叫做发布-订阅(Publish/Subscribe)模式观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使得它们能够自动更新自己。观察者模式的动机将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维护一致性而使各类紧密耦合,这样会给维护、扩展和重用都... 阅读全文
posted @ 2010-08-20 23:51 奋斗の机器 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。“建造者(Builder)模式”又叫生成器模式。当我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。它主要是用于创建一些复杂... 阅读全文
posted @ 2010-08-19 22:01 奋斗の机器 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 迪米特法则:也叫最少知识原则。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。迪米特法则首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开。迪米特法则其根本思想是强调了类之间的松耦合。类之间的耦... 阅读全文
posted @ 2010-08-18 21:42 奋斗の机器 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。既然用了继承,并且肯定这个继承有意义,就应该要成为子类的模板,所有重复的代码都应该要上升到父类去,而不是让每个子类都去重复。当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法来处理。模板方... 阅读全文
posted @ 2010-08-17 22:14 奋斗の机器 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 原型模式(Prototype),用原型实例指针创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。一般在初始化的信息不发生变化的情况下,克隆是最好的办法。这既隐藏了对象创建的细节,又对性能是大大的提高。不用重新初始化对象,而是动态地获得对象运行时的状态。在很多关于原型模式的JAVA、C#的资料中都会顺带提到浅复制与深复... 阅读全文
posted @ 2010-08-17 00:15 奋斗の机器 阅读(184) 评论(0) 推荐(0) 编辑