java设计模式--适配器模式
2019-08-16 09:54:14来源:博客园 阅读 ()
java设计模式--适配器模式
适配器模式:将一个本不能兼容客户端的类的接口通过适配器转为可以兼容的接口。
这里有一个“中国学生接口”,定义了“说中国话”和“听中国话两个方法”
//中国学生接口 public interface ChineseStudent { void speakChinese(); void listenChinese(); } //中国学生类 public class ChineseStudent1 implements ChineseStudent { public String name; public ChineseStudent1(String name){ this.name = name; } @Override public void speakChinese() { System.out.println("学生:" + name + "说话"); } @Override public void listenChinese() { System.out.println("学生:" + name + "聆听"); } } //测试方法 public class Test { public static void main(String[] args) { ChineseStudent chineseStudent = new ChineseStudent1("zhangsan"); chineseStudent.speakChinese(); chineseStudent.listenChinese(); } }
测试结果:
学生:zhangsan说话
学生:zhangsan聆听
此时如果来了一个外国学生呢,这个外国学生不会说中文并且也听不懂中文,那么他如何去和其他中国学生交流呢,此时我们就需要一个“翻译”——适配器
//外国学生类 public class ForeignStudent { private String name; public ForeignStudent(String name){ this.name = name; } public void speakEnglish(){ System.out.println("学生:" + name + "说话"); } public void listenEnglish() { System.out.println("学生:" + name + "聆听"); } }
//适配器类 public class Translator implements ChineseStudent{ //实例外国学生类 ForeignStudent foreignStudent = new ForeignStudent("Joe");
@Override public void speakChinese() { foreignStudent.speakEnglish(); } @Override public void listenChinese() { foreignStudent.listenEnglish(); } }
//测试方法 public class Test { public static void main(String[] args) { ChineseStudent chineseStudent = new ChineseStudent1("zhangsan"); chineseStudent.speakChinese(); chineseStudent.listenChinese(); ChineseStudent foreignStudent = new Translator(); foreignStudent.speakChinese(); foreignStudent.listenChinese(); } }
测试结果:
学生:zhangsan说话
学生:zhangsan聆听
学生:Joe说话
学生:Joe聆听
这样的话即使外国学生类不能直接实现“说中文”和“听中文”方法,但是通过适配器就完成了这一操作,便兼容了ChineseStudent接口。
总结:虽然适配器模式可以去兼容接口,但是这种操作通常是维护时不希望去改变兼容方与被兼容方的类时才被考虑的方法,如果在开发时能考虑到接口不兼容的问题,及时解决,通常问题就不会扩大到去兼容接口的程度。
原文链接:https://www.cnblogs.com/yimengyizhen/p/11146216.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:最有效率的算出2*8的结果
下一篇:Struts笔记2
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash