小胖子的Java设计模式-策略模式

策略模式(Strategy Pattern)

背景介绍:

在小胖子的程序世界里,披萨店的管理问题一度让人头痛。猥琐和小胖子之间的矛盾激化,涛涛劝架的效果也不是很好。为了实现和平共处,小胖子决定引入策略模式,制定一套和平共处的原则,让每个人都能够按照自己的方式制作披萨,但在一些关键问题上达成一致。

设计模式应用:
策略模式

小胖子决定采用策略模式,制定一套制作披萨的和平共处原则。每位师傅可以自由选择自己擅长的制作方式,但在一些关键步骤上需要遵循共同的规范。这样,每个人都有发挥自己特长的空间,同时也保证了整个披萨店的制作流程的一致性。

代码示例:
// 披萨接口
interface Pizza {
    String makePizza();
}

// 制作披萨的策略接口
interface PizzaMakingStrategy {
    String execute();
}

// 具体制作芝士披萨的策略
class CheesePizzaMakingStrategy implements PizzaMakingStrategy {
    @Override
    public String execute() {
        return "准备芝士披萨的材料,涂抹酱料,加入配料,烘焙披萨,切片,交付披萨。";
    }
}

// 具体制作海鲜披萨的策略
class SeafoodPizzaMakingStrategy implements PizzaMakingStrategy {
    @Override
    public String execute() {
        return "准备海鲜披萨的材料,涂抹酱料,加入配料,烘焙披萨,切片,交付披萨。";
    }
}

// 披萨店,持有制作策略
class PizzaShop {
    private PizzaMakingStrategy pizzaMakingStrategy;

    public PizzaShop(PizzaMakingStrategy pizzaMakingStrategy) {
        this.pizzaMakingStrategy = pizzaMakingStrategy;
    }

    public void setPizzaMakingStrategy(PizzaMakingStrategy pizzaMakingStrategy) {
        this.pizzaMakingStrategy = pizzaMakingStrategy;
    }

    public String makePizza() {
        return pizzaMakingStrategy.execute();
    }
}

// 客户端
public class StrategyPatternExample {
    public static void main(String[] args) {
        PizzaMakingStrategy cheesePizzaStrategy = new CheesePizzaMakingStrategy();
        PizzaMakingStrategy seafoodPizzaStrategy = new SeafoodPizzaMakingStrategy();

        PizzaShop pizzaShop = new PizzaShop(cheesePizzaStrategy);
        System.out.println("小胖子制作披萨:" + pizzaShop.makePizza());

        // 猥琐接管制作,使用自己的制作方式
        pizzaShop.setPizzaMakingStrategy(seafoodPizzaStrategy);
        System.out.println("猥琐制作披萨:" + pizzaShop.makePizza());
    }
}
和平共处

在这个例子中,小胖子通过策略模式为披萨店制定了和平共处的原则。每位师傅可以根据自己的喜好和特长选择制作方式,但在共同的关键步骤上,他们需要遵循相同的规范,以保证整个披萨店的制作流程的一致性。

策略模式使得每个人都能够充分发挥自己的创造力,同时又能够在重要的方面达成共识,从而使得披萨店的管理更加和谐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值