在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)Command: 定义命令的接口,声明执行的方法。ConcreteCommand:命
在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。抽象化存在于多个实体中的共同的概念性联系,就是抽象化。作为一个过程,抽象化就是忽略一些信息,从而把不同的实体当做同样的实体对待【LISKOV94】。实现化抽象化给出的具体实现,就是实现化。脱耦所谓耦合,
建造者模式就是将一个复杂对象的构造与它的表示分离,对于相同的建造过程,不同的建造者会得到不同的建造结果。建造者的建造过程各个部分都是单独完成的。建造者定义建造的步骤和接口。具体建造者实现建造的步骤和接口,并完成产品的建造。指导者决定使用哪一个建造者来建造,完成自己所需的产品。建造者基类接口#ifndef CBuildBaseH #define CBuildBaseH #include<ios
工厂模式就是将一组有相同方法行为的类放在一起生成。通过工厂类可以确定要生成哪一个对象。与此同时可以延迟对象生成,方便后续扩展和维护。 具体工厂类的抽象基类,定义了具体工厂类都实现的抽象方法。class CFood { public: virtual ~CFood(){}; //所有工厂类都要实现的同一接口方法 virtual void MakeFood() = 0; protected:
装饰者模式就是实现一些被装饰者主体,之后由若干了装饰者方法可以对被装饰者进行动态装饰。通过使用组合的方式,避免使用继承。可以动态扩充,相对灵活,但是缺点是实现的类比较多。 Componet 装饰者模式就是定义一个被装饰者的基类,实现一些被装饰者的行为,之后实现具体的被装饰者对象。 Decorator在被装饰者的基类的基础上实现装饰者基类,装饰者
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 实现:#include<string> using namespace std; //单例模式 cl
观察者模式就是一些观察者对象观察某一主题,当主题的数据发送变化时,由主题通知所有注册的观察者对象。 具体实现: 主题基类实现:#include<vector> #include "Cobserver.h" using namespace std; //-------------------------------------
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号