设计模式之-适配器模式

结构图:

Readme.txt 

场景:在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时用适配器模式能很好地解决这些问题
定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。
该模式的主要优点如下。
客户端通过适配器可以透明地调用目标接口。
复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。
将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。

其缺点是:对类适配器来说,更换适配器的实现过程比较复杂。
package com.xingsfdz.adapter;

/**
 * 
 * @类名称 Target.java
 * @类描述 <pre>定义一个标准,让适配器来实现这个接口,实现这个标准</pre>
 * @作者  xingsfdz xingsfdz@163.com
 * @创建时间 2019年5月9日 下午10:13:21
 * @版本 1.00
 *
 * @修改记录
 * <pre>
 *     版本                       修改人 		修改日期 		 修改内容描述
 *     ----------------------------------------------
 *     1.00 	xingsfdz 	2019年5月9日             
 *     ----------------------------------------------
 * </pre>
 */
public interface Type_C {
	
	public void run();

}
package com.xingsfdz.adapter;

/**
 * 
 * @类名称 Adaptee.java
 * @类描述 <pre>适配者:被适配的对象</pre>
 * @作者  xingsfdz xingsfdz@163.com
 * @创建时间 2019年5月9日 下午10:19:15
 * @版本 1.00
 *
 * @修改记录
 * <pre>
 *     版本                       修改人 		修改日期 		 修改内容描述
 *     ----------------------------------------------
 *     1.00 	xingsfdz 	2019年5月9日             
 *     ----------------------------------------------
 * </pre>
 */
public class Adaptee {
	
	public void Charge(){
		System.out.println("做具体的业务逻辑.充电...");
	};

}

 

package com.xingsfdz.adapter;

/**
 * 
 * @类名称 Adapter.java
 * @类描述 <pre>适配器:具体去执行接口标准的厂商,可以是很多不同的厂商,但核心都必须实现run方法,另也可以添加一些自己花里胡哨的东西,比如皮肤</pre>
 * @作者  xingsfdz xingsfdz@163.com
 * @创建时间 2019年5月9日 下午10:21:30
 * @版本 1.00
 *
 * @修改记录
 * <pre>
 *     版本                       修改人 		修改日期 		 修改内容描述
 *     ----------------------------------------------
 *     1.00 	xingsfdz 	2019年5月9日             
 *     ----------------------------------------------
 * </pre>
 */
public class FactoryA extends Adaptee implements Type_C{

	@Override
	public void run() {
		this.Charge();
	}

}
package com.xingsfdz.adapter;

/**
 * 
 * @类名称 ClientTest.java
 * @类描述 <pre>客户端测试:比如小米手机使用Type-c充电</pre>
 * @作者  xingsfdz xingsfdz@163.com
 * @创建时间 2019年5月9日 下午10:26:39
 * @版本 1.00
 *
 * @修改记录
 * <pre>
 *     版本                       修改人 		修改日期 		 修改内容描述
 *     ----------------------------------------------
 *     1.00 	xingsfdz 	2019年5月9日             
 *     ----------------------------------------------
 * </pre>
 */
public class XiaomiPH {
	
	public static void main(String [] args) {
		System.out.println("客户端开始开始使用Type-c充电");
		Type_C mi = new FactoryA();
		mi.run();//这样就把电通过Type-c传输到手机了
		System.out.println("客户端开始使用Type-c充电完毕");
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值