Java23种设计模式
将不符合要求的对象适配成符合要求对象的一种模式。
适配器模式不是在设计项目时候考虑的,而是解决项目运行的问题时候添加。
需求:现有一家苹果店和一家香蕉店,用户需要到苹果柜台购买苹果,香蕉柜台购买香蕉,现在需要整合成一个柜台,既可以卖苹果又可以买香蕉。
- 创建水果接口,里面有购买方法
public interface Fruit {
void buy();
}
- 创建苹果类和香蕉类
public class Apple implements Fruit{
@Override
public void buy() {
System.out.print("购买了苹果!\n");
}
}
public class Banana implements Fruit{
@Override
public void buy() {
System.out.print("购买了香蕉!\n");
}
}
- 创建适配器,一个购买动作可以同时购买苹果和香蕉
public class FruitAdapter {
public static final String APPLE = "apple";
public static final String BANANA = "banana";
private Fruit fruit;
public void buyFruit(String name){
if(name.equals(APPLE)){
fruit = new Apple();
fruit.buy();
}else if(name.equals(BANANA)){
fruit = new Banana();
fruit.buy();
}else{
System.out.print("本店暂不售卖"+name);
}
}
}
- 调用购买
public class Test {
public static void main(String[] args) {
FruitAdapter adapter = new FruitAdapter();
adapter.buyFruit(FruitAdapter.APPLE);
adapter.buyFruit(FruitAdapter.BANANA);
adapter.buyFruit("橙子");
}
}
打印结果
购买了苹果!
购买了香蕉!
本店暂不售卖橙子