本文共 831 字,大约阅读时间需要 2 分钟。
目录
将一个抽象类从它的具体实现中解耦出来,这样这两个类可以独立的变化,互不影响。
Abstraction(抽象类)
定义抽象类的接口。维护一个指向Implementor类型对象的指针。RefinedAbstraction 扩充由Abstraction定义的接口。Implementor 定义实现类的接口。该接口不一定要与Abstraction的接口完全一致:事实上这两个接口可以完全不同。一般来讲,Implementor接口仅提供基本操作,而Abstraction则定义了基于这些操作的较高层次的操作。ConcreteImplementor 实现Implementor接口并定义它的具体实现。#includeusing namespace std;//Implementorclass DrawImplementor {public: virtual void drawSquare(double) = 0; virtual ~DrawImplementor() { }};// ConcreteImplementor Aclass DrawWithBrush: public DrawImplementor {public: DrawWithBrush() { } virtual ~DrawWithBrush() { } void drawSquare(double side) { cout<<"DrawWithBrush->square with side="< < square with side="< <
运行结果:
DrawWithBrush->square with side=10 DrawWithPencil->square with side=20