不老呢看病的秘密--适配器模式,结构型模式之二

本文通过一个乡村医生的故事,介绍了软件设计中的适配器模式。讲述了如何通过适配器模式解决不同接口之间的兼容问题,使得原本接口不兼容的类能够协同工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创,转载请注明!  

      不老呢看过很多病,有不少看好了。有人就奇怪了,为何大医院要花费几百快的病,一个小小村民也能看好,这是为什么呢?以后还要不要去医院了?为了解开村民的疑惑,我们就来解开其中的奥秘,奥秘就在于。。。

      草药是不老呢自己做的。所有草药的原料、加工流程他门儿清。我们用一个类的实现来表示:

class 草药 {

   private:

   原材料一;

   原材料二;

   原材料三;

   加工方法(){}

   virtual 煎熬(){}

}

class 烫伤膏: public 草药{

......

}

class 痢疾药: public 草药{

......

}

        问题是,来找不老呢看病的不光是烫伤病人和痢疾病人,还有得了肝炎的,摔了腰扭了腿的,甚至还有得了癌症的。不老呢也不是神,他不可能看的了这么多种类的病,怎么办呢?进货,从县里的药房买进一些药,放到自己的药架子上,组成一个较齐全的常见病药架。

class 常见药 : 草药{

   private:

        Lists 西药; //黄氏响声丸, 抗生素, 泰诺,  ......;

   public: 

   常见药(药名){ 西药.pushback(药名);}

   virtual 煎熬(){

       西药[药名].服用方法();

   }    

}

      这天,来了一位小学老师,上课时把嗓子喊坏了,出不了声音。不老呢问明情况,找来一张报纸,给她包了一包草药,药里面埋了三颗黄氏响声丸,支炉子煎熬成糊糊,交给她带走并嘱咐开水冲服。

main(){

      //老师比划着:嗓子坏了,抓些草药吃。不老呢于是用黄氏响声丸加些无关痛痒的辅料做了一包”草药“,并开始支炉子煎熬:

     草药 interface = new 常见药(new 黄氏响声丸());

     interface.煎熬();

}

       这就是适配器模式,《设计模式》对她的定义:将一个类的接口转换成客户希望的另一接口,使原本由于接口不兼容不能一起工作的类可以一起工作。

       也就是说,当人们通过指定接口来使用两种事物,而这两种事物有不同的接口(比如草药是煎熬,西药是冲服),而你无法改动他俩的接口、或不想改动。这时就可以使用适配器模式,用继承加组合的方式来组成一个混合体,这个混合体有客户需要的接口,她满足人们调用指定接口的要求。

       其实,就是挂羊头,卖狗肉。

       适配器模式主要用于希望服用一些现存的类,但是,接口又不一致的情况。她分为类适配器和对象适配器。

类适配器使用多重继承来使一个接口匹配另一个接口:


       对象适配器就是就是用组合+继承的方式达到一个接口匹配另一个接口:


参考:《设计模式》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值