适配器模式

来源:互联网 发布:java shiro盐值加密 编辑:程序博客网 时间:2024/05/02 02:36

适配器模式:将一个类的接口转换成客户希望的另外一个接口。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}@Overridepublic void attack(){// TODO Auto-generated method stub     System.out.println("前锋"+name+"进攻");}@Overridepublic 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}@Overridepublic void attack(){// TODO Auto-generated method stub       fc.进攻();}@Overridepublic 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}@Overridepublic void attack(){// TODO Auto-generated method stubSystem.out.println("后卫"+name+"进攻");}@Overridepublic void defense(){// TODO Auto-generated method stubSystem.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
原创粉丝点击