适配器模式的三种实现

1.接口适配器模式,借助中间抽象类空实现目标接口所有方法,子类选择性重写,可以减少实现不必要方法

先写一个接口,里面有三种方法

public interface Team {
    void exploitation();//开发
    void test();//测试
    void products();//产品
}

写一个实现类,实现这个接口

public class AbstractAdapter implements Team {
    @Override
    public void exploitation() {
        System.out.println("我是开发");
    }

    @Override
    public void test() {
        System.out.println("我是测试");
    }

    @Override
    public void products() {
        System.out.println("我是产品");
    }
}

再用一个类继承这个实现类,选择要实现的方法即可

public class TeamSocket extends AbstractAdapter {
    @Override
    public void exploitation() {
        System.out.println("全栈小王子");
    }

    public static void main(String[] args) {
        TeamSocket teamSocket=new TeamSocket();
        teamSocket.exploitation();
    }
}

2.类适配器模式;通过继承源类,实现目标接口的方式实现适配,但是由于Java单继承的机制,这就要求目标必须是接口,有一定的局限性

写一个接口,一个类,分别有对应的方法

public interface Play {
    void playGames();
}
public class Read {
    public  void readBook(){
        System.out.println("读书");
    }
}

用类实现接口并继承类

public class Adapter extends Read implements Play{
    @Override
    public void playGames() {
        System.out.println("玩游戏");
    }

    public static void main(String[] args) {
        Adapter a=new Adapter();
        a.playGames();//玩游戏
        a.readBook();//读书
    }
}

3.对象适配器模式 通过组合方式持有源类对象,可以把源类对象子类传进来,比类适配器更灵活

还是刚才的Play接口和Read类

public class Adapter implements Play{
    //通过组合持有读书的对象,内部引用读书来适配
    private Read read;
    public  Adapter(Read read){
        this.read=read;
    }
    public void readBook(){
        read.readBook();
    }

    @Override
    public void playGames() {
        System.out.println("玩游戏");
    }

    public static void main(String[] args) {
        Adapter adapter=new Adapter(new Read());
        adapter.playGames();//玩游戏
        adapter.readBook();//读书
    }

}

你可能感兴趣的:(java,适配器模式,java,开发语言)