适配器模式

适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

在软件开发中,系统的数据和行为都正确,但是接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。

1、Target类

public class Target
{
public void Request()
{
	System.out.println("普通请求");
}
}
2、Adaptee类

public class Adaptee
{
public void specificRequest()
{
	System.out.println("特殊请求");
}
}
3、 Adapter类
public class Adapter extends Target
{
private Adaptee adaptee=new Adaptee();
public void Request()
{
	adaptee.specificRequest();
}
}
4、Client客户端类

public class Client
{
public static void main(String[] args)
{
	Target target=new Adapter();
	target.Request();
}
}
实例一:ccc是中国人,在NBA打中锋,刚开始不懂英文,需要一个中间翻译,这个翻译就是适配器。

1、抽象类Player

public abstract class Player
{
protected String name;
public Player(String name)
{
	this.name=name;
}
public  abstract void attack();
public abstract void defense();
}
2、Forwards前锋
public class Forwards extends Player
{

	public Forwards(String name)
	{
		super(name);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void attack()
	{
		// TODO Auto-generated method stub
     System.out.println("前锋"+name+"进攻");
	}

	@Override
	public void defense()
	{
		// TODO Auto-generated method stub
		  System.out.println("前锋"+name+"防守");
	}

}
3、ForeignCenter类
public class ForeignCenter
{
	private String name;

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public void 进攻()
	{
		// TODO Auto-generated method stub
     System.out.println("中锋"+name+"进攻");
	}

	public void 防守()
	{
		// TODO Auto-generated method stub
		  System.out.println("中锋"+name+"防守");
	}

}
4、Translator翻译

public class Translator extends Player
{
	private ForeignCenter fc=new ForeignCenter();
    public Translator(String name)
	{
		super(name);
		fc.setName("ccc");
		// TODO Auto-generated constructor stub
	}
	@Override
	public void attack()
	{
		// TODO Auto-generated method stub
       fc.进攻();
	}

	@Override
	public void defense()
	{
		// TODO Auto-generated method stub
     fc.防守();
	}

}
5、Guards类

public class Guards extends Player
{

	public Guards(String name)
	{
		super(name);
		
		// TODO Auto-generated constructor stub
	}

	@Override
	public void attack()
	{
		// TODO Auto-generated method stub
		System.out.println("后卫"+name+"进攻");
	}

	@Override
	public void defense()
	{
		// TODO Auto-generated method stub
		System.out.println("后卫"+name+"进攻");
	}

}
6、客户端程序

public class Client
{
public static void main(String[] args)
{
	Player a=new Forwards("aaa");
	a.attack();
	Player b=new Guards("bbb");
	b.attack();
	
	Player c=new Translator("ccc");
	c.attack();
	c.defense();
}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值