适配器模式——个人理解

适配器模式:简单来说就是想通过Target中Request()方法调用Adaptee中specialRquest()方法。

实现思路:

1、在一个接口Target里有一个普通的request()方法;还有一个已存在接口Adaptee(多个实现类)或类Adaptee,里有特殊方法。
        2、想要通过调用接口Target普通方法调用已存在类Adaptee里面的方法,就要创建一个特殊的实现类实现接口Target。这个特殊的实现类就叫做适配器。将想要调用的的类Adaptee的对象传入适配器,并在适配器的方法中调用Adaptee的特殊方法。这样就可以利用接口Target的对象调用普通request方法就可以调用类Adaptee中的特殊方法了。

例子为大话设计模式中的例子:

package adapter_pattern;
public abstract class Player {

//接口
protected String name;
  public Player(String name) {
this.name = name;
}
abstract void attack();
abstract void defend();
}

******************************************************************

package adapter_pattern;

public class Forward extends Player {

//接口实现类,里面为普通方法
public Forward( String name) {
super(name);
}
void attack(){
System.out.println(name+" Attack!");
}
void defend(){
System.out.println(name+" Defend!");
}
}

**********************************************************************

package adapter_pattern;
public class ForeignCenter {
private String name;
//已存在的类里面的方法为特殊方法
public ForeignCenter(String name) {
this.name = name;
}
void jingong(){
System.out.println(name+"进攻!");
}
void fangshou(){
System.out.println(name+"防守!");
}
}

********************************************************

package adapter_pattern;
public class Translator extends Player{

//对接口类的特殊实现。传入或创建想要调用类的对象
public Translator(String name) {
super(name);
}
ForeignCenter fc=new ForeignCenter(name);//特殊类的对象
@Override
void attack() {
fc.jingong();
}
@Override
void defend() {
fc.fangshou();
}
}

**************************************************************

package adapter_pattern;
public class Test {

//测试类。
public static void main(String[] args) {
Player p1=new Forward("麦迪");
p1.attack();

Player p2=new Translator("姚明");
p2.attack();
p2.defend();
}
}

注意:   适配器模式是“不得已而为之”,是在后期实在没办法才用。前期设计时最好不要用,实在不行就重新设计。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值