java 适配器模式

 适配器模式常用来进行补救

分为2种 类适配器 和 对象适配器

第一种 类适配器

假如需要一个类实现一个方法dothing(String a)

这里假定让B类去实现,首先建立一个适配器(AdaperClassInterface一个接口)

而我们发现A类正好有一个dosomething(String a)方法实现了dothing方法

那么我们可以这么写

类A

/**
 * 类适配器
 * 类A提供了实现适配器方法dothing的一个方法 dosomething
 * @author Administrator
 *
 */
public class A {
	
	public void doSomething(String a){
		
	}
	
}

 

类B

/**
 * 类B可以这么写(类适配器方法)
 * @author Administrator
 *
 */
public class B extends A implements  AdaperClassInterface{

	@Override
	public void doThing(String a) {
		doSomething(a);
	}
	
}

  

 

接口AdaperClassInterface

/**
 * 适配器,适配所有dothing方法
 * @author Administrator
 *
 */
public interface AdaperClassInterface {
	public void doThing(String a);
}

 第2种 对象适配器

通常适配的方法可以有很多,比如AdaperClassInterface 中在增加undothing(String a,String b)

如下

/**
 * 适配器,适配所有dothing,undoThing方法
 * @author Administrator
 *
 */
public interface AdaperClassInterface {
	public void doThing(String a);
	public void undoThing(String a,String b);
}

类A不变

/**
 * 类A提供了实现适配器方法dothing的一个方法 dosomething
 * @author Administrator
 *
 */
public class A {
	
	public void doSomething(String a){
		
	}
	
}

 类C

public class C {
	public void undoSomething(String a,String b){
		
	}
}

 

类B

/**
 * 类B可以这么写(对象适配器方法)
 * @author Administrator
 *
 */
public class B implements  AdaperClassInterface{
	/**
	 * 将类A和C引进来,主要是因为java不能多继承,spring架构其实也是用了这种方法代替多继承
	 */
	public A aclass;
	public C cclass;

	public void setCclass(C cclass) {
		this.cclass = cclass;
	}

	public void setA(A aclass) {
		this.aclass = aclass;
	}

	@Override
	public void doThing(String a) {
		aclass.doSomething(a);
	}

	@Override
	public void undoThing(String a, String b) {
		cclass.undoSomething(a, b);
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值