网站开发需要提供哪些东西,怎样建设网站内容,企业建站1年,电商平台网站建设多少钱适配器模式属于结构型的设计模式#xff0c;它是结构型设计模式之首#xff08;用的最多的结构型设计模式#xff09;。
适配器设计模式也并不复杂#xff0c;适配器它是主要作用是将一个类的接口转换成客户希望的另外一个接口这样使得原本由于接口不兼容而不能一起工作的那…适配器模式属于结构型的设计模式它是结构型设计模式之首用的最多的结构型设计模式。
适配器设计模式也并不复杂适配器它是主要作用是将一个类的接口转换成客户希望的另外一个接口这样使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式有两种1.类的适配器 2.对象适配器对象适配器更多一些。
适配器模式和装饰模式很类似下面一篇我们会学习装饰者模式并分析他们之间的区别示例比如你在网上买了一个手机但是买家给你发回来了一个3接头的充电器但是恰好你又没有3接头的插槽只有2个接口的插槽于是你很直然地便会想到去找你个3接口转两接口的转换器。简单的分析下这个转换器便是我们这里的适配器Adapter。三相插头便是我们要适配的Adaptee,两相插
类适配器
-----在我看来C的类适配器的用多重继承实现并提供适配后的接口。这是你的三相插头[cpp] view plain copyclass ThreePhaseOutlet { public: void doThreePhasePlugin() { cout三相插头强势插入endl; } }; 这是你想要的两相插头[cpp] view plain copyclass TwoPhaseOutlet { public: virtual void doPlugin() 0; }; 然后你将需要找到一个转接头将三相插头转换为“两相插头”[cpp] view plain copyclass OutletConvertor: public TwoPhaseOutlet,public ThreePhaseOutlet { public: void doPlugin() { doConvertor(); doThreePhasePlugin(); } void doConvertor() { cout三相插头转为两厢插头endl; } }; 现在你可以强势插入两相的插口了。[cpp] view plain copyTwoPhaseOutlet* outlet new OutletConvertor(); outlet-doPlugin(); 对象适配器模式-----对象适配器是将需要适配的对象进行包装然后提供适配后的接口。对象适配器的 三相插口和转接头的代码和上面一致。只是整合步骤不一致[cpp] view plain copyclass OutletConvertor : public TwoPhaseOutlet { public: void doPlugin() { doConvertor(); m_out.doThreePhasePlugin(); } void doConvertor() { cout三相插头转为两厢插头endl; } ThreePhaseOutlet m_out; }; 对象适配器相比类适配器来说更加灵活他可以选择性适配自己想适配的对象。例如我们下面把代码改成这样你也许就会明白为什么我这样说[cpp] view plain copyclass OutletConvertor : public TwoPhaseOutlet { public: OutletConvertor(ThreePhaseOutlet out) { m_out out; } void doPlugin() { doConvertor(); m_out.doThreePhasePlugin(); } void doConvertor() { cout三相插头转为两厢插头endl; } ThreePhaseOutlet m_out; }; 我们在构造的时候将具体需要适配的适配对象传入这样便可以根据传入不同的对象从而对该对象进行适配。而类适配器却无法选择对象他是对整个类进行适配。也就是把所有的三相插口全部转换为两相的而不是针对某一个。