首页 > 其他 > 详细

Adapter(适配器模式)

时间:2014-01-22 22:05:50      阅读:373      评论:0      收藏:0      [点我收藏+]

模拟电源适配器:电源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(适配器模式)

原文:http://blog.csdn.net/jcy472578/article/details/18654087

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!