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();//读书
}
}