摘要:
模式动机:当某个接口可能有多种实现方式时,一般会使用继承来解决。但是继承总是体现出与具体的平台相关,无法很好地进行扩充,此时需要将接口与实现类最大可能地解耦,使其二者都可以独立发展而不受影响,增大系统的灵活性。模式定义(Bridge Pattern):将抽象接口与具体实现分离开来,使得两部分都可以独... 阅读全文
摘要:
模式动机:有时软件复用的一个难题就是接口的不兼容性,适配器的职责就是为客户提供兼容的适配者接口,使得客户只需访问一类接口就可以调用合适的适配者,而其中的适配细节则有适配器来完成。模式定义(Adapter Pattern):将一个接口转换为用户期望的接口,使得那些接口不兼容的类可以一起工作。模式结构图... 阅读全文
摘要:
考虑如下一种场景:有一个电视机类Tv和一个遥控器类Remote,如何定义二者的关系呢?首先遥控器不能继承电视机,因为不是is-a关系;其次,遥控器也并非电视机的一部分,因此包含关系has-a也不适合。这时候将Remote类作为Tv类的友元类比较合适,使其能够使用Tv类的任何数据来控制电视机。但是如何... 阅读全文
摘要:
假设有一个有理数类Rational,有一个计算有理数乘法的成员函数operator*,示例如下: 1 #include 2 3 class Rational 4 { 5 public: 6 Rational(int numerator = 0, int denominator = 1) ... 阅读全文
摘要:
模式动机:对于系统中的某些类而言,确保只有一个实例运行很重要,例如一个系统只能有一个计时器或者ID生成器。模式定义(Singleton Pattern):确保一个类只有一个实例,并且该类自己负责创建它自己的唯一实例,而且还必须可以向系统提供这个实例。模式结构图:模式分析:单例类拥有一个私有构造函数,... 阅读全文
摘要:
模式动机:在软件系统中,有些对象的创建过程非常复杂,但是又需要频繁创建,这时候需要提供一个原型对象,使用时只需要复制这个原型对象就可以了。模式定义(Prototype Pattern):使用原型实例指定创建对象的类型,然后通过复制原型对象来创建新对象。模式结构图:模式代码:bt_原型模式.h: 1 ... 阅读全文
摘要:
模式动机:一个对象由若干部件组成,而组合这些部件的过程比较复杂,因此可以把这个组合工作交给建造者来完成,建造这返回给客户的是一个组装好的对象。模式定义(Builder Pattern):将一个复杂对象的构建与表示分离开来,使得同样的构建过程可以创建不同的表示形式。模式结构图:其中包含抽象建造者Bui... 阅读全文
摘要:
如下为一个有理数类,其中包含一个用来计算乘积的函数: 1 #include 2 3 using namespace std; 4 5 class Rational 6 { 7 public: 8 Rational(int numerator = 0, int denominator =... 阅读全文
摘要:
缺省情况下,C++中函数参数的传递方式为by-value。即函数都是以实际参数的副本进行传递,而函数返回的也是一个副本。考虑如下实例程序: 1 #include 2 3 class Person 4 { 5 public: 6 Person(){ cout 2 3 using nam... 阅读全文
摘要:
附加概念:产品等级结构:不同品牌的同一类产品,如Haier电视机,TCL电视机都是电视机,因此属于同一个产品等级结构。产品族:属于同一个品牌的所有产品,如Haier电视机,Haier冰箱等。模式动机:工厂方法模式一般针对的是一个产品等级结构(如仅生产电视机),而抽象工厂模式针对的是多个产品等级结构(... 阅读全文