您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

C++设计模式浅识桥接模式

2024/5/2 22:01:06发布40次查看
合成/聚合复用原则(carp):
优先使用合成/聚合,而不是使用类继承。
聚合表示一种弱的”拥有关系”,体现的是a对象可以包含b对象,但b对象不是a对象的一部分。
合成表示一种强的”拥有关系”,体现了严格的部分和整体的关系,部分和整体的生命周期一样。
其好处:优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物,而继承就有可能。
继承是一种强耦合的结构,父类变,子类就要变。使用继承时,一定要在是‘is-a’的关系时再考虑使用,而不是任何时候都去使用。
桥接模式(bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
实现指的是抽象类和它的派生类用来实现自己的对象。
测试用例:
[code]int main(){ conerectimplementora *a = new conerectimplementora; conerectimplementorb *b = new conerectimplementorb; abstraction *abs = new abstraction; abs->setimplementor(a); abs->operation(); //output: conerectimplementora. abstraction *abs2 = new abstraction; abs2->setimplementor(b); abs2->operation(); //output: conerectimplementorb. return 0; }
模式实现
[code]//implementor类,实现类 class implementor{ public: virtual void operator(){ } }; //具体实现类a class conerectimplementora: public implementor{ virtual void operator(){ std::cout << "conerectimplementora.\n"; } }; //具体实现类b class conerectimplementorb: public implementor{ virtual void operator(){ std::cout << "conerectimplementorb.\n"; } }; //抽象类->桥接implementor类 class abstraction{ protected: implementor *imp; public: void setimplementor(implementor *imp){ this->imp = imp; } virtual void operation(){ imp->operator(); } }; //被提炼的对象 class refinedabstraction: public abstraction{ virtual void operation()override{ imp->operator(); } };
总结:实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让他们独立变化,减少它们之间的耦合。
以上就是c++设计模式浅识桥接模式的内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product