2019独角兽企业重金招聘Python工程师标准>>>

已知一个类实现了某种功能,需要让这个类可以被接口可用。

可以通过对该类进行扩展,并实现统一接口,可以完成一个适配器模式。大部分的设计模式都是通过接口来表达,接口中的域字段默认是static和final的。

通过适配器模式,我们可以在任何现有类的基础上添加新的接口,所以这意味着让方法接受接口类型,是一种让任何类都可以对该方法进行适配的方式。如下EnglishTeacher本身只有teachEnglish方法,但是Nestty只接受IGeneralTeacher接口,为了让英语老师继续可以教课,可以通过增加适配器的方法进行原来类的复用。这就可以看到接口而不是类的强大之处。

//TODO demo

public class NesttyMain {IGeneralTeacher generalTeacher;interface IGeneralTeacher{public void doTeach();}static class EnglishTeacher{public void teachEnglish(){System.out.println("teach English");}}static class AdaptedEnglishTeacher extends EnglishTeacher implements IGeneralTeacher{public void doTeach() {teachEnglish();}}NesttyMain(IGeneralTeacher generalTeacher){this.generalTeacher = generalTeacher;}public static void main(String[] args){NesttyMain nm = new NesttyMain(new AdaptedEnglishTeacher());nm.generalTeacher.doTeach();}}

基于设计模式来说,实现Runnable接口可以继承另外一个不同的类,而继承Thread则不可以。可以看到区别了吧?

转载于:https://my.oschina.net/u/1271447/blog/2993219

设计模式之强大的接口适配器模式,继承Thread or 实现Runnable?相关推荐

  1. 【Java】继承 Thread 和 实现 Runnable 区别

    继承 Thread VS 实现 Runnable 区别 从java的设计来看,通过继承Thread或者实现Runnable接口来创建线程本质上没有区别,从jdk帮助文档可以看到Thread类本身就实现 ...

  2. 【Java多线程】实现Runnable接口方式 / 继承Thread类方式;使用synchronized锁实现线程安全;线程安全的懒汉式单例模式;死锁问题示例

    Thread 的生命周期 一.实现Runnable接口方式 1.在 run 方法中使用 synchronized 块 /*** 例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的 ...

  3. 实现Runnable接口和继承Thread类之间的区别

    在Java语言中,我们都知道,有两种创建线程的方式,一中是使用Runnable接口,另一种是使用Thread类. public class DemoRunnable implements Runnab ...

  4. 多线程的创建方式---继承Thread和实现Runnable

    继承Thread类创建多线程 1 package cn.ftf.thread; 2 /** 3 * 多线程实现方式一 继承Thread实现多线程,继承Thread,重写run方法 4 * @autho ...

  5. Java多线程的实现方式-Thread 类,Runnable 接口

    在 Java 的 JDK 开发包中,已经自带了对多线程技术的支持,可以方便地进行多线程编程.实现多线程编程的方式主要有两种:一种是继承 Thread 类,另一种是实现 Runnable 接口.下面详细 ...

  6. Java多线程和并发(三),Thread类和Runnable接口

    目录 1.Thread和Runnable接口 三.Thread类和Runnable接口 1.Thread和Runnable接口 转载于:https://www.cnblogs.com/xzmxddx/ ...

  7. extend Thread 和 implements Runnable

    原文地址:extend Thread 和 implements Runnable 一个Thread的实例只能产生一个线程 or: 同一实例(Runnable实例)的多个线程 look: public ...

  8. Java中继承thread类与实现Runnable接口的区别

    Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 在实际应用中, ...

  9. java基础 通过继承Thread类和实现Runnable接口创建线程

    java 创建线程 Java中,线程也是一种对象,但不是任何对象都可以成为线程. 只有实现了Runnable接口或继承了Thread类的对象才能成为线程. 继承Thread类 //格式: class ...

最新文章

  1. 你了解如何评估模型吗?
  2. android 代码设置inputtype,android – 如何正确设置EditText的InputType?
  3. linux将bridge当做hub来用
  4. MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)
  5. python 模糊匹配文件名 glob_Python: glob匹配文件
  6. 完全卸载sql2005(试了以后很成功,收录下来,分享给大家)
  7. [html] 列举几种多列等高布局的方法
  8. createsamples.cpp中生成vec文件的实现及详细注释、图解——人脸识别的尝试系列(三)
  9. 红与黑(信息学奥赛一本通-T1216)
  10. 哈啰单车失窃数十辆 盗窃者竟有摩拜员工!只因其又新又好骑...
  11. java 提交界面_使用javascript如何实现页面加载时自动提交表单
  12. 被苹果摆了一道的高通,亮出了一张“小米”牌
  13. 普林斯顿微积分读本小记(未完待续)
  14. h5如何实现贪吃蛇小游戏
  15. 信息系统安全思维导图
  16. brew search怎么看版本_brew 查看已安装软件
  17. DIOCP之DEMO-登陆验证设计(二)
  18. 深度精简版xp 安装并使用iis
  19. 29HTML5期末大作业:在线电影网站设计——电影从你的全世界路过(4页) HTML+CSS+JavaScript 大学生电影网页制作教程 学生HTML电影网页设计作业成品网页制作代码 学生影视
  20. [编程题]evaluate-reverse-polish-notati

热门文章

  1. Symfony2 - paginator bundle 复杂查询时候报错解决
  2. xmpp这一段蛋疼的 坑,
  3. jsp内置对象page
  4. python绘图添加上下标
  5. 新手探索NLP(四)
  6. vb 搜索指定目录下的指定类型文件
  7. wpf--------------datagrid全选反选 多选进行删除操作 前后台
  8. 面向对象之内置方法(简单)、组合。以及接口归一化设计与抽象类
  9. hdu 4059 The Boss on Mars
  10. WebService在开发中的实际问题