设计模式之适配器模式 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

设计模式之适配器模式

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:26


       适配器模式的概念是将一个类的接口转换成客户欲望的别的一个接口,使得本来因为接口不兼容而不克不及一路工作的那些类可以一路工作。适配就是大年夜“源”到“目标”的适配,而中心链接“源”和“目标”的就是适配器。
       适配器一共涉及三种角色,分别是:1.目标接口(Target),即客户所期望的接口,目标可所以具体或者抽象的类,也可所以接口;2.须要适配的类(Adaptee);3.适配器(Adapter):经由过程包装一个须要适配的对象,将原接口转化成目标接口。
       举个简单例子来解释适配器模式:有一个"源"(Adaptee)是一小我,他会说日语和英语,但某个岗亭(Target)须要的是既会日语,又要懂英语,还得懂法语,这时就须要我们添加一个说法语的办法,才能使该"源"(Adaptee)胜任这个岗亭(Target)。那么具体该若何操作呢?一种办法是直接修改"源"(Adaptee),给他添加一个说法语的办法,但如许真的合适吗?适配是为了实现某种目标而临时性的为"源"(Adaptee)添加上某种办法,所以不克不及修改"源"(Adaptee),并且一旦修改,就违背了java高内聚低耦合的特点。那么毕竟如何才能实现既添加办法,又不违背java高内聚低耦合的特点呢?
源代码如下:
public class Moluo {
	
	private String name;
	private String sex;
	private int age;
	
	public void speakJapanese(){
		System.out.println("I can speak Japanese!");
	}
	
	public void speakEnglish(){
		System.out.println("I can speak English!");
	}
	...//以下省略成员变量的get和set办法
}
目标接口代码如下:
public interface Job {
	
	public abstract void speakJapanese();
	public abstract void speakEnglish();
	public abstract void speakFrench();
	
}

适配器代码如下:
public class Adapter extends Moluo implements Job{

	public void speakFrench() {
		
	}
	
}

       噢啦,经由过程适配器模式,摩罗就成了精晓三门外语的人才了,再也不消受六级的困扰了,想想都冲动....
      其实,适配器模式有两种,一种是类适配器,别的一种是对象适配器。上述办法其实就是类适配器。因为java不支撑多持续,只能单持续,所以一般类适配器用得就比较少,因为局限性比脚绫趋显,比如一个目标接口同时须要多个"源"(Adaptee),显然类适配器明显不克不及实现,所以就须要采取对象适配器来实现。
      源代码和目标接口代码同上,不再赘述,下面是适配器代码:
public class Adapter implements Job {

	Moluo moluo;

	public Adapter(Moluo moluo) {
		this.moluo = moluo;
	}

	public void speakEnglish() {
		moluo.speakEnglish();
	}

	public void speakJapanese() {
		moluo.speakJapanese();
	}

	//new add
	public void speakFrench() {
		
	}

}

        扼要分析一下上述两种适配器模式,类的适配模式用于单一源的适配,因为它的源的单一话,代码实现不消写选择逻辑,很清楚;而对象的适配模式则可用于多源的适配,弥补潦攀类适配模式的不足,使得本来用类适配模式须要写很多适配器的情况不复存在,弱点是,因为源的数量可以较多,所以具体的实现前提选择分支比较多,不太清楚。    
 最后总结一下适配器模式:
  长处:
      1.复竽暌姑了现存的类,解决了现存类和复竽暌姑情况请求不一致的问题。
      2.将目标类和适拍┞愤类解耦,经由过程惹人一个适配拼荡蜇用现有的适拍┞愤类,而无需修改原有代码。
      3.一个对象适配器可以把多个不合的适拍┞愤类适配到同一个目标,也就是说,同一个适配器可以把适拍┞愤类和它的子类都适配到目标接口。
  缺点: 对于对象适配器来说,改换适配器的实现过程比较复杂。
  实用处景:
             1. 体系须要应用现有的类,而这些类的接口不相符体系的接口。
     2. 想要建立一个可以重用的类,用于与一些彼此之间没有太大年夜接洽关系的一些类,包含一些可能在将来引进的类一路工作。
             3.两个类所做的工作雷同或相似,然则具有不合接口的时刻。
     4.旧的体系开辟的类已经实现了一些功能,然则客户端却只能以别的接口的情势拜访,但我们不欲望手动更改原有类的时刻。
     5.应用第三方组件,组件接口定义和本身定义的不合,不欲望修改本身的接口,然则要应用第三方组件接口的功能。

尊再版权,转载请注明本文链接
                                      
                                           迎接存眷行者摩罗微信"大众,"号(xingzhemoluo),合营交换编程经验,扫描下方二维码即可;    
                                                                  [img]http://img.blog.csdn.net/20150105230410875         
                                 

相关案例查看更多