Adapter(适配器模式)

模拟电源适配器:电源A在工作,在不改变电源A(两孔)的基础上加上电源B(三孔),通过中间添加一个适配器来实现

软件开发中:如果对软件进行维护需要添加新功能,前提是不能改变原有代码,可以通过Adapter来实现添加功能

采用适配器模式目的:让两个不相干的功能实现兼容

用法一:

1:单项适配,将B转换成A

interface PowerA{
	void insert();
}
class PowerAImpl implements PowerA{


	@Override
	public void insert()
	{
		System.out.println("电源A已工作");
		
	}
	
}
interface PowerB{
	void insert();
}
class PowerBImpl implements PowerB{

	@Override
	public void insert()
	{
		System.out.println("电源B已工作");
		
	}
	
}
class Adapter implements PowerA{
	@Override
	public void insert()
	{
		PowerB power=new PowerBImpl();
		power.insert();
		
	}
	
}
public class Test
{
	private void start(PowerA power){
		power.insert();
	}
	@org.junit.Test
	public void adpterTest(){

		PowerA power=new PowerAImpl();
		start(power);
		Adapter adapter=new Adapter();
		start(adapter);
	}
}

2:双向适配,A和B都能用

class Adapter implements PowerA,PowerB{
	private PowerA a;
	private PowerB b;
	public Adapter(PowerA a){
		this.a=a;
	}
	public Adapter(PowerB b){
		this.b=b;
	}
	@Override
	public void insert()
	{
		b.connect();
	}
	@Override
	public void connect()
	{
		a.insert();
	}
	
}

用法二:接口适配器

接口中有很多方法有时候不需要全部实现,可以采用接口适配器方式,用到哪个方法就重写哪个方法

interface Funs{
	void fun1();
	void fun2();
	void fun3();
}
class FunsAdapter implements Funs{

	@Override
	public void fun1()
	{
		// TODO Auto-generated method stub
		
	}
	@Override
	public void fun2()
	{
		// TODO Auto-generated method stub
		
	}
	@Override
	public void fun3()
	{
		// TODO Auto-generated method stub
		
	}
}
/**
 * 用到哪个方法就重写哪个方法
 * 
 */
class userFuns extends FunsAdapter{
	public void fun1(){
		
	}
}


Adapter(适配器模式)

上一篇:一步一步安装vertica7.0.x(操作系统:CentOS6.x)


下一篇:android开发eclipse环境代码字体大小更改和代码自动提示功能基本设置(待补充)