`

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);
	}
	
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics