1、类适配器模式

早上刚来,看到弟弟在喝水,我突然感觉不太好了,说道:今天天气有点阴沉,估计又要下雨了,到处湿漉漉的,就连刚学的设计模式也感觉是注水了!

弟弟撇了我一眼,道:此话怎讲?

我说:你可知晓类适配器模式?想来你是知道的,就是通过类之间的关系构建的适配器;
它是由三部分组成:现有资源,适配的方法接口,目标资源。现有资源以目标资源作为父类,通过实现接口的方法,调用父类的属性或者方法。从而实现现有资源做出目标资源的操作。给你看个图图!

看图说话:从关系上来看,大古继承了迪迦,大古拥有了变身器,大古打不动怪兽,迪迦可以打怪兽看。大古想要打怪兽,需要通过实现打开变身器,才能调用迪迦的各种能力,实现打怪兽。

/*** 迪迦奥特曼** @author czy* @date 2021/6/18*/
public class UltramanTiga {public  void action(){System.out.println("迪迦使用宇宙射线击打宇宙小金刚");System.out.println("迪迦对怪兽造成了100点伤害");}
}/*** 大古* 大古想要变身迪迦,需要一个变身器** @author czy* @date 2021/6/18*/
public class BigGu extends UltramanTiga implements ShapeShifter{@Overridepublic void becomeBigPerson() {this.action();}
}/*** 变身器** @author czy* @date 2021/6/18*/
public interface ShapeShifter {/*** 变成巨人*/void becomeBigPerson();
}/*** 快来看奥特曼变身打怪兽** @author czy* @date 2021/6/18*/
public class Test {public static void main(String[] args) {//我有一个大古,我想打怪兽BigGu bigGu = new BigGu();//我想要个迪迦bigGu.becomeBigPerson();}
}

弟弟:继承耦合有点高啊!在实际生产中应该不适用吧。

我:没错继承父类实现适配耦合性高

我:没错,明明继承父类,调用父类方法就行了,这种模式还要通过实现接口,通过实现接口方法中调用父类接口,感觉多此一举,完全是在水经验,故此,我说它是在灌水!

2、对象适配模式

弟弟:那有没有好的解决方法呢?

我:将继承改成组合就行了,每个人身体中都有迪迦,需要通过希望之光激发他。这就是对象适配模式。卡卡兔!!!

/*** 迪迦奥特曼终极版** @author czy* @date 2021/6/18*/
public class UltramanTiga {public  void action(){System.out.println("迪迦使用宇宙射线击打宇宙小金刚");System.out.println("迪迦对怪兽造成了100点伤害");}
}/*** 每个人*  每个人的信念心中都有迪迦,通过希望之光操作迪迦打怪兽* @author czy* @date 2021/6/21*/
public class EveryBody implements Light{private UltramanTiga ultramanTiga;public EveryBody(UltramanTiga ultramanTiga) {this.ultramanTiga = ultramanTiga;}@Overridepublic void becomeBigPerson() {ultramanTiga.action();}
}/*** 希望之光** 适配接口** @author czy* @date 2021/6/21*/
public interface Light {/*** 变成巨人*/void becomeBigPerson();
}/*** 每个人都是迪迦** @author czy* @date 2021/6/21*/
public class Test {public static void main(String[] args) {EveryBody body = new EveryBody(new UltramanTiga());body.becomeBigPerson();}
}

你看看多个接口在这增加代码量!是不是水!

弟弟:确实水!明明能直接不用接口实现的!

我心中窃笑,表面稳如老狗:这就是面向接口编程啊骚年!七大原则忘了吗?依赖倒置原则啊,面向接口而非面向实现,所以是我在灌水哦!

适配器模式和迪迦奥特曼不得不说的故事相关推荐

  1. (九)模板方法模式详解(包含与类加载器不得不说的故事)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 模板方法模式,这是一个在许多 ...

  2. 我和freelancer不得不说的故事5 --- 心理落差

    我和freelancer不得不说的故事5 --- 心理落差 我下海之前所在的外企,是一家顶级知名IT企业,其SAP咨询服务业务规模和影响都很大,是SAP咨询界五大咨询公司之一.我从07年加入这家公司, ...

  3. 搜索引擎新架构:与SQL不得不说的故事

    简介:本话题将围绕阿里巴巴搜索引擎HA3架构,和大家详细阐述搜索引擎在面对架构深度学习和数据规模的挑战时,如何以数据库SQL的执行方式来应对解决. 特邀嘉宾:罗涛--阿里巴巴集团资深技术专家 视频地址 ...

  4. 云图说|ROMA演进史:一个ROMA与应用之间不得不说的故事

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 华为云ROMA源 ...

  5. 如此可爱,焉能不爱?—我与在线作业不得不说的故事

    夏日炎炎,每当看到孩子埋头抄写作业题目而淌下汗珠时,我就在想:有没有好的办法替孩子去抄作业,让孩子省下时间干点别的?每当别的父母都在领着孩子去公园玩耍而我还在堆积如山的案头批改作业时,我就在想:有没有 ...

  6. 《数据赋能IT团队技术管理实战》与老杨不得不说的故事

    来了,坐. 接下来是<数据赋能IT团队技术管理实战>这本书与老杨不得不说的故事,请各位观众,有钱的捧个钱场,有人的捧个人场呗,走着. 书:"大家好,我是<数据赋能IT团队技 ...

  7. UESTC-2016dp专题 F 柱爷与三叉戟不得不说的故事

    柱爷与三叉戟不得不说的故事 Time Limit: 500/500MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 题目链接 ...

  8. CDOJ 1355 柱爷与三叉戟不得不说的故事(枚举子集状压dp)

    柱爷与三叉戟不得不说的故事 Time Limit: 500/500MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Subm ...

  9. 绿之韵背后不得不说的故事

    近日,直销企业2019保护消费者权益3·15座谈会在北京召开.本次会议,国家市场监管总局价格监督检查与反不正当竞争局(规范直销与打击传销办公室).网络交易监督管理司.特殊食品安全监督管理司.中国消费者 ...

最新文章

  1. 网页设计和用户界面设计
  2. java学习规划-转的
  3. RVDS2.2安装及破解步骤
  4. 【Servlet】总结 JSP的四大域对象、Servlet的四个作用域:pageContext、request、session、application
  5. Kotlin系列之循环
  6. Android之运行PopupWindow提示Unable to add window -- token null is not valid; is your activity running?
  7. 7-3 最短路径 (20 分)(分支限界+思路+详解)
  8. 自动化测试框架:没有Surprise的原因
  9. 【坐在马桶上看算法】啊哈算法13:零基础彻底弄懂“并查集“
  10. SuSE 11 安装mysql 5.6.35步骤
  11. TCP/IP研究(2)-TCB
  12. java velocity 语法_Velocity 语法
  13. 伺服电机常用参数设置_伺服驱动器常见参数的设置
  14. 《微微一笑很倾城》中肖奈大神说的平方根倒数速算法是什么鬼?三十分钟理解!
  15. 如何查看公众号的第一篇文章
  16. Android 组件化代码中心化问题之.api化方案
  17. Kubernetes资源清单和Pod生命周期
  18. nginx配置同一个端口转发多个项目
  19. PMOS与NMOS的区别
  20. 【BZOJ 2330】 [SCOI2011]糖果【差分约束】

热门文章

  1. java类初始数组_java中数组初始化的三种方式是什么
  2. 四种方法求字符串长度
  3. MaterialDesign学习篇(七),CardView卡片式布局的使用
  4. 蓝牙模块——毕设之路
  5. 李天平:2008新年,我给团队的新年寄语!
  6. 批量将doc转为docx
  7. 解决海盗王客户端白屏和建筑人物等消失的问题
  8. spark读Hbase数据集成Hbase Filter(过滤器)
  9. Parse error: syntax error, unexpected T_STRING in /home/wwwroot/request_handler.php on line 60
  10. 最强TTS(文本转语音)模型Bark发布 - 支持带有情感的语音,歌曲生成 -体验声音克隆功能