设计模式之强大的接口适配器模式,继承Thread or 实现Runnable?
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?相关推荐
- 【Java】继承 Thread 和 实现 Runnable 区别
继承 Thread VS 实现 Runnable 区别 从java的设计来看,通过继承Thread或者实现Runnable接口来创建线程本质上没有区别,从jdk帮助文档可以看到Thread类本身就实现 ...
- 【Java多线程】实现Runnable接口方式 / 继承Thread类方式;使用synchronized锁实现线程安全;线程安全的懒汉式单例模式;死锁问题示例
Thread 的生命周期 一.实现Runnable接口方式 1.在 run 方法中使用 synchronized 块 /*** 例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的 ...
- 实现Runnable接口和继承Thread类之间的区别
在Java语言中,我们都知道,有两种创建线程的方式,一中是使用Runnable接口,另一种是使用Thread类. public class DemoRunnable implements Runnab ...
- 多线程的创建方式---继承Thread和实现Runnable
继承Thread类创建多线程 1 package cn.ftf.thread; 2 /** 3 * 多线程实现方式一 继承Thread实现多线程,继承Thread,重写run方法 4 * @autho ...
- Java多线程的实现方式-Thread 类,Runnable 接口
在 Java 的 JDK 开发包中,已经自带了对多线程技术的支持,可以方便地进行多线程编程.实现多线程编程的方式主要有两种:一种是继承 Thread 类,另一种是实现 Runnable 接口.下面详细 ...
- Java多线程和并发(三),Thread类和Runnable接口
目录 1.Thread和Runnable接口 三.Thread类和Runnable接口 1.Thread和Runnable接口 转载于:https://www.cnblogs.com/xzmxddx/ ...
- extend Thread 和 implements Runnable
原文地址:extend Thread 和 implements Runnable 一个Thread的实例只能产生一个线程 or: 同一实例(Runnable实例)的多个线程 look: public ...
- Java中继承thread类与实现Runnable接口的区别
Java中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 在实际应用中, ...
- java基础 通过继承Thread类和实现Runnable接口创建线程
java 创建线程 Java中,线程也是一种对象,但不是任何对象都可以成为线程. 只有实现了Runnable接口或继承了Thread类的对象才能成为线程. 继承Thread类 //格式: class ...
最新文章
- 你了解如何评估模型吗?
- android 代码设置inputtype,android – 如何正确设置EditText的InputType?
- linux将bridge当做hub来用
- MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)
- python 模糊匹配文件名 glob_Python: glob匹配文件
- 完全卸载sql2005(试了以后很成功,收录下来,分享给大家)
- [html] 列举几种多列等高布局的方法
- createsamples.cpp中生成vec文件的实现及详细注释、图解——人脸识别的尝试系列(三)
- 红与黑(信息学奥赛一本通-T1216)
- 哈啰单车失窃数十辆 盗窃者竟有摩拜员工!只因其又新又好骑...
- java 提交界面_使用javascript如何实现页面加载时自动提交表单
- 被苹果摆了一道的高通,亮出了一张“小米”牌
- 普林斯顿微积分读本小记(未完待续)
- h5如何实现贪吃蛇小游戏
- 信息系统安全思维导图
- brew search怎么看版本_brew 查看已安装软件
- DIOCP之DEMO-登陆验证设计(二)
- 深度精简版xp 安装并使用iis
- 29HTML5期末大作业:在线电影网站设计——电影从你的全世界路过(4页) HTML+CSS+JavaScript 大学生电影网页制作教程 学生HTML电影网页设计作业成品网页制作代码 学生影视
- [编程题]evaluate-reverse-polish-notati