打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
设计模式笔记之六 (适配器模式)

适配器模式

适配器模式就是将一个类的接口转变成另一个客户类需要的接口,使两个类都不用改动各自的逻辑。通俗点就是亡羊补牢。

 

我们的实验室最近异常尴尬,起因是我们实验室正在环球展出我们的产品,其中有个环节是展示产品出厂时的状态。

在展示兽人和人妖的时候没什么问题,但是展示正常男人和女人的时候,却通不过国家有关部门的检查,因为我们的产品出厂的时候都是红果果的啊。

class Ren {}class RenYao extends Ren {    public String head = "人妖头";    public String body = "人妖身体 - 无"; // 大家都知道什么是‘无’    public String foot = "人妖脚";        public void show() {        System.out.println(this.head + " " + this.body + " " + this.foot);    }}class ShouRen extends Ren {    public String head = "兽人头";    public String body = "兽人身体 - 异种"; // 只要是不同就没关系,也没见小狗因为红果果被有关部门抓    public String foot = "兽人脚";        public void show() {        System.out.println(this.head + " " + this.body + " " + this.foot);    }}class NanRen extends Ren {    public String head = "男人头";    public String body = "男人身体 - 男性";    public String foot = "男人脚";        public void show() {        System.out.println(this.head +  " " + this.foot); // 不能红果果的展出    }}class NvRen extends Ren {    public String head = "女人头";    public String body = "女人身体 - 女性";    public String foot = "女人脚";        public void show() {        System.out.println(this.head + " " + this.foot); // 不能红果果的展出    }}public class Adapter {    public static void main(String[] args) {        new ShouRen().show();//展示全部        new RenYao().show();//展示全部        new NanRen().show();//只展示头脚--这与我们的初衷不合        new NvRen().show();//只展示头脚--这与我们的初衷不合    }}

这是我们遇到最大的尴尬,我们的产品已经造好了,但是我们展出的时候,发现有些展品却不能用,而且这两个因素(类)都不能轻易改变。此时我们研究所的某个太阳国文艺片爱好者说到,这个问题好解决啊,太阳国就有很好的先例啊,他们的文艺片分为外销型和内销型,当外销型的片子想转内销的话,只要上个马就行(好吧,这里给广大丑矮穷搓撸的岛国爱情动作片片友们普及下知识:岛国的内销片子是不允许裸露XXX的,只有外销欧美的片子可以,所以出口转内销的话需要一些后期的上码处理的,当然也有坊间零售,不公映的就没人管的着了)。

这下我们一下子都懂了。

class Ren {}class RenYao extends Ren {    public String head = "人妖头";    public String body = "人妖身体 - 无"; // 大家都知道什么是‘无’    public String foot = "人妖脚";        public void show() {        System.out.println(this.head + " " + this.body + " " + this.foot);    }}class ShouRen extends Ren {    public String head = "兽人头";    public String body = "兽人身体 - 异种"; // 只要是不同就没关系,也没见小狗因为红果果被有关部门抓    public String foot = "兽人脚";        public void show() {        System.out.println(this.head + " " + this.body + " " + this.foot);    }}class NanRen extends Ren {    public String head = "男人头";    public String body = "男人身体 - 男性";    public String foot = "男人脚";        public void show() {        System.out.println(this.head +  " " + this.foot); // 不能红果果的展出    }}class NvRen extends Ren {    public String head = "女人头";    public String body = "女人身体 - 女性";    public String foot = "女人脚";        public void show() {        System.out.println(this.head + " " + this.foot); // 不能红果果的展出    }}class NanRenAdapter {    NanRen nr;    public NanRenAdapter() {        nr = new NanRen();    }    public void show() {        System.out.println(nr.head + " " + "打码的:" + nr.body + " " + nr.foot); // 打码    }}class NvRenAdapter {    NvRen nr;    public NvRenAdapter() {        nr = new NvRen();    }    public void show() {        System.out.println(nr.head + " " + "打码的:" + nr.body + " " + nr.foot); // 打码    }}public class Adapter {    public static void main(String[] args) {        new ShouRen().show();//展示全部        new RenYao().show();//展示全部        new NanRenAdapter().show();//展示全部-打码        new NvRenAdapter().show();//展示全部-打码    }}

适配器模式是最不推荐使用的模式,只要有可能统一接口,就应该在设计阶段统一。

适配器模式简直都不是设计模式,而是维护模式。但现今的IT工作者们做的大都数都是在前辈们的代码尸体上缝缝补补,所以轻易不要改动前辈们的代码,因为你不知道是不是还有别人在使用这个接口,所以使用适配器模式吧!

亡羊补牢总比不补好。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
(教学思路 C#之类九)抽象类和接口
设计模式之Adapter(适配器)
java23种设计模式详解
常见的设计模式及应用场景
23种设计模式详解(二)
设计模式学习笔记-Adapter模式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服