摘要:内核中用的很多,整理时间子系统的时候又遇到了notification mechanism,因此做次记录:参考:1、http://msdn.microsoft.com/en-us/library/ff649664.aspx 2、http://blog.csdn.net/lovelion/article/details/7720232 3、2.6.34 观察者(Observer)模式是对象的行为型模式,又叫做发表-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-收听者(Source/Listener)模式或从属者(Dependents)模式。 当某件..
阅读全文
摘要:装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为。装饰模式降低类系统的耦合度,可以动态地增加或删除对象的职责,并使得需要装饰的具体构件类和具体装饰类可以独立变化,以便增加新的具体构件类和具体的装饰类。在装饰模式中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩充原有类的功能。在装饰模式中,为了系统具有更好的灵活性和可扩展性,通常会定义一个抽象装饰类,而将具体的装饰类作为它的子类。在装饰模式中结构图中包含4个角色(1)、Component(抽象构件):它是具体构件和抽象装饰类的共同父类,声明了在具体构件中实现的业务方法。它的引入可以使客户端以一致的方式处理未被装饰的对象
阅读全文
摘要:组合模式使用面向对象的思想来实现树形结构的处理和构件,描述了如何将容器对象和叶子对象进行递归组合,实现简单,灵活性好。组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体——部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体——部分”(Part-While)模式,它是一种对象结构型模式。组合模式的关键是定义了一个抽象构件类,它既可以代表叶子,也可以代表容器,而客户端针对该抽象构建类进行编程,无须知道它到底表示的是叶子还是容器,可以对其进行统一处理。同时容器对象与抽象构件类之间还建立了一个聚
阅读全文
摘要:桥接模式是一种对象结构型模式,其将抽象部分和它的实现部分分离,使它们都可以独立的变化,又称为柄体(Handle and Body)模式或接口(Interface)模式。优点:1、分离抽象接口及其实现部分。桥接模式使用“对象间的关联关系”解耦了抽象类和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度变化(即抽象和实现不再在同一个继承层次中结构中,而是“子类化”它们,使它们各自都具有自己的子类,以便任意组合子类,从而获得多维度组合对象)。2、在很多情况下,桥接模式可以取代多层继承方案。多层继承方案违背了单一职责原则,复用性较差,且类的个数非常多,桥接模式是比多层继承方案更好的解决方法,它极
阅读全文
摘要:结构型模式可以描述两种不同的东西:类与类的实例。结构型模式可以分为类结构型模式和对象结构型模式。类结构型模式关心类的组合,可以由多个类组合成一个更大的系统,在类结构型模式中只存在继承关系和实现关系;对象型结构型模式关心类与对象的组合,通过关联关系在一个类中定义另一个类的实例作为成员对象,再调用所定义的成员对象的方法;根据“合成复用原则”,在系统中尽量使用关联关系来替代继承关系,因此大部分结构型模式都是对象结构型模式。
阅读全文
摘要:对象适配器模式的缺点是:与类适配器模式相比,要在适配器中置换适配着类的某些方法比较麻烦。如果一定要置换掉适配者类的一个或多个方法,可以先做一个适配者类的子类,在子类中将适配者类的方法置换掉,然后再把适配者类的子类当做真正的适配着进行适配,实现过程较为复杂。优点:1、将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,无须修改原有的结构。2、增加了类的透明性和复用性,将具体的业务实现过程封装在适配者类中,对于客户端类而言是透明的,而且提高了适配者类的复用性,同一个适配者类可以在多个不同的系统中复用。此外,类适配器模式还有如下优点:由于适配器类是适配者类的子类,因此可以在适配器类中置
阅读全文
摘要:缺点:1、单例模式没有抽象层,单例模式的扩展较困那(开闭原则)2、单例类的职责过重,既提供了业务方法,又提供了创建对象的方法,将对象的创建和对象本身的功能耦合在一起(违反单一职责原则,但是似乎又无法避免)优点:1、单例模式提供了对唯一实例的受控访问;2、由于在系统内存中只有一个对象,因此可以节约系统资源,提高系统性能3、允许可变数目的实例。使用与控制单例对象相似的方法来获得指定个数的实例对象。
阅读全文
摘要:原型模式的缺点:1、需要为每一个类配备一个克隆方法,而且该克隆方法位于一个类的内部,当对已有的类进行改造时,需要修改源代码,违背了开闭原则(open-closed discipline)2、在实现深克隆时需要编写较为复杂的代码,而且当类之间存在多重继承时,为了实现深克隆,每一层对象对应的类都必须支持深克隆,实现起来比较麻烦。原型模式的优点:1、当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程,通过复制一个已有实例可以提高新实例的创建效率;个人认为,对于该中模式,最好还是使用工厂模式,在抽象产平中嵌入clone接口好一些,刘伟先生的书中,当我用C++实现时,依然选择用工厂模式进行
阅读全文
摘要:将一个复杂对象的构建与它的标示分离,使得同样的构建过程可以创建不同的标示.建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需的建造者类型即可.建造者模式中的4个角色:1、Builder(抽象建造者):它为创建一个产品Product对象的各个部件指定抽象接口,在该接口中一般声明两类方法:一类方法是buildPartX(),用于创建复杂对象的各个部件,另一类方法是getResult(),用于返回复杂对象;2、ConcreteBuilder(具体建造者):它实现了Builder中的接口,实现
阅读全文
摘要:创建型模式:抽象工厂模式引入概念:1、产品等级结构:当抽象的产品由具体的工厂生产出不同的产品时,这些归属与同一类的抽象产品就构成了产品等级结构;2、产品族:具体的工厂可以生产出来的不同产品就构成了一个产品族。抽象工厂模式中的具体工厂不只是创建一种产品,它将负责创建一族产品;每一个具体工厂都提供了多个工厂方法用于生产多种不同类型的产品,这些产品构成了一个产品族.在抽象工厂模式结构图中包含了4个角色。(1)、AbstractFactory(抽象工厂):它声明了一组用于创建一族产品的方法,每一个方法都对应一种产品;(2)、ConcreteFactory(具体工厂):它实现了在抽象工厂中声明的创建产品
阅读全文
摘要:创建型模式简单工厂模式的缺点是:当我们引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,需要修改工厂类的方法,违反了“开闭原则”。工厂模式提供了一个抽象工厂接口来声明抽象工厂方法,而由其子类来具体实现工厂方法,创建具体的产品对象。包含的四个角色:1、Product(抽象产品):它是定义产品的接口,是工厂方法模式所创建对象的超类行,也是产品对象的公共父类;2、ConcreteProduct(具体产品):它实现了抽象产品接口,某种类型的具体产品由专门的具体工厂创建,具体工厂和具体产品之间一一对应;3、Factory(抽象工厂):在抽象工厂类中,声明了工厂方法(Factory Me
阅读全文
摘要:与一个对象相关的职责通常有3类:1、对象本身所具有的职责(对象自身所具有的数据和行为)2、创建对象的职责3、使用对象的职责;简单工厂模式的缺点:1、简单工厂集中了所有产品的创建逻辑,职责过重2、系统扩展困难,一旦添加新产品不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护 严重违反“开闭原则”(Open-closed princple)简单工厂模式的优点:1、对象创建和使用分离,客户端免除直接创建产品对象的职责,而仅“消费”产品;2、客户端只需传入相应的参数即可获得相应的产品;3、将产品的创建限定在一个静态方法中,避免代码散落趋势蔓延;
阅读全文
摘要:Amour和Miller----2001明确的事物(如教室、场地)概念事物(如课程、模块)事件(如测试、考试、讲座)外部组织(如发布者、提供者)扮演的角色(如学生、教师、校长)其他系统(如招生系统、年纪报告系统)
阅读全文
摘要:引述自CSDN 刘伟技术博客http://blog.csdn.net/LoveLion 1 #include 2 #include 3 using namespace std; 4 5 class AllyControlCenter; 6 //抽象观察类 7 class Observ...
阅读全文