小胖子的Java设计模式-适配器模式

适配器模式(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();
    }
}
兼容新型机器

在这个例子中,适配器模式帮助披萨店兼容了新型制作披萨机器,使得新机器能够按照原有的制作流程进行工作。这种方式使得新旧机器得以和谐共处,保持了披萨店的生产流程的稳定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值