适配器模式(Adapter Pattern)
背景介绍:
在小胖子的程序世界里,披萨店引入了一台新型制作披萨的机器,但这台机器的接口与原有的制作流程不兼容,导致了冲突。为了解决这个问题,小胖子决定引入适配器模式,使新型机器能够与原有的制作流程协调工作。
设计模式应用:
适配器模式
为了兼容新型制作披萨机器,小胖子决定引入适配器模式。他引入了一个披萨机器适配器,将新型机器的接口适配成原有流程所需要的接口,从而实现新旧机器的和谐共处。
代码示例:
// 披萨机器接口
interface PizzaMachine {
void prepareIngredients();
void spreadSauce();
void addToppings();
void bakePizza();
void slicePizza();
void deliverPizza();
}
// 新型披萨机器
class NewPizzaMachine {
void mixIngredients() {
System.out.println("新型机器:搅拌披萨材料");
}
void spreadTomatoSauce() {
System.out.println("新型机器:涂抹番茄酱");
}
void addCheese() {
System.out.println("新型机器:加入芝士");
}
void bake() {
System.out.println("新型机器:烘焙披萨");
}
void cut() {
System.out.println("新型机器:切片");
}
void box() {
System.out.println("新型机器:打包");
}
}
// 披萨机器适配器
class PizzaMachineAdapter implements PizzaMachine {
private NewPizzaMachine newPizzaMachine;
public PizzaMachineAdapter(NewPizzaMachine newPizzaMachine) {
this.newPizzaMachine = newPizzaMachine;
}
@Override
public void prepareIngredients() {
newPizzaMachine.mixIngredients();
}
@Override
public void spreadSauce() {
newPizzaMachine.spreadTomatoSauce();
}
@Override
public void addToppings() {
newPizzaMachine.addCheese();
}
@Override
public void bakePizza() {
newPizzaMachine.bake();
}
@Override
public void slicePizza() {
newPizzaMachine.cut();
}
@Override
public void deliverPizza() {
newPizzaMachine.box();
}
}
// 客户端
public class AdapterPatternExample {
public static void main(String[] args) {
// 原有的披萨机器
PizzaMachine originalMachine = new PizzaMachine() {
@Override
public void prepareIngredients() {
System.out.println("原有机器:准备披萨材料");
}
@Override
public void spreadSauce() {
System.out.println("原有机器:涂抹酱料");
}
@Override
public void addToppings() {
System.out.println("原有机器:加入配料");
}
@Override
public void bakePizza() {
System.out.println("原有机器:烘焙披萨");
}
@Override
public void slicePizza() {
System.out.println("原有机器:切片披萨");
}
@Override
public void deliverPizza() {
System.out.println("原有机器:交付披萨");
}
};
// 新型披萨机器
NewPizzaMachine newMachine = new NewPizzaMachine();
// 适配器,使得新型机器能够兼容原有的制作流程
PizzaMachineAdapter adapter = new PizzaMachineAdapter(newMachine);
// 使用原有机器
System.out.println("使用原有机器制作披萨:");
originalMachine.prepareIngredients();
originalMachine.spreadSauce();
originalMachine.addToppings();
originalMachine.bakePizza();
originalMachine.slicePizza();
originalMachine.deliverPizza();
// 使用新型机器,通过适配器
System.out.println("\n使用新型机器制作披萨:");
adapter.prepareIngredients();
adapter.spreadSauce();
adapter.addToppings();
adapter.bakePizza();
adapter.slicePizza();
adapter.deliverPizza();
}
}
兼容新型机器
在这个例子中,适配器模式帮助披萨店兼容了新型制作披萨机器,使得新机器能够按照原有的制作流程进行工作。这种方式使得新旧机器得以和谐共处,保持了披萨店的生产流程的稳定