首页 > 其他分享 >123

123

时间:2023-12-04 10:46:03浏览次数:27  
标签:coffee return Coffee cost new 123 public

// 工厂模式
interface CoffeeFactory {
    Coffee createCoffee(String coffeeType);
    Condiment createCondiment(String condimentType);
}

// 具体工厂类
class ConcreteCoffeeFactory implements CoffeeFactory {
    @Override
    public Coffee createCoffee(String coffeeType) {
        if ("Espresso".equals(coffeeType)) {
            return new Espresso();
        } else if ("Americano".equals(coffeeType)) {
            return new Americano();
        } else if ("Latte".equals(coffeeType)) {
            return new Latte();
        }
        return null;
    }

    @Override
    public Condiment createCondiment(String condimentType) {
        if ("Milk".equals(condimentType)) {
            return new Milk();
        } else if ("Foam".equals(condimentType)) {
            return new Foam();
        } else if ("Syrup".equals(condimentType)) {
            return new Syrup();
        }
        return null;
    }
}

// 咖啡类
interface Coffee {
    double cost();
}

// 具体咖啡类
class Espresso implements Coffee {
    @Override
    public double cost() {
        return 2.0;
    }
}

class Americano implements Coffee {
    @Override
    public double cost() {
        return 2.5;
    }
}

class Latte implements Coffee {
    @Override
    public double cost() {
        return 3.0;
    }
}

// 装饰者模式
abstract class Condiment implements Coffee {
    protected Coffee coffee;

    public Condiment(Coffee coffee) {
        this.coffee = coffee;
    }
}

// 具体装饰者类
class Milk extends Condiment {
    public Milk(Coffee coffee) {
        super(coffee);
    }

    @Override
    public double cost() {
        return coffee.cost() + 0.5;
    }
}

class Foam extends Condiment {
    public Foam(Coffee coffee) {
        super(coffee);
    }

    @Override
    public double cost() {
        return coffee.cost() + 0.3;
    }
}

class Syrup extends Condiment {
    public Syrup(Coffee coffee) {
        super(coffee);
    }

    @Override
    public double cost() {
        return coffee.cost() + 0.4;
    }
}

// 命令模式
interface OrderCommand {
    void execute();
}

// 具体命令类
class MakeCoffeeCommand implements OrderCommand {
    private Coffee coffee;

    public MakeCoffeeCommand(Coffee coffee) {
        this.coffee = coffee;
    }

    @Override
    public void execute() {
        System.out.println("Making coffee: $" + coffee.cost());
    }
}

// 客户端代码
public class CoffeeShop {
    public static void main(String[] args) {
        CoffeeFactory factory = new ConcreteCoffeeFactory();

        Coffee espresso = factory.createCoffee("Espresso");
        Coffee americano = factory.createCoffee("Americano");
        Coffee latte = factory.createCoffee("Latte");

        Condiment milkLatte = factory.createCondiment("Milk")(latte);
        Condiment syrupMilkLatte = factory.createCondiment("Syrup")(milkLatte);

        OrderCommand[] commands = {
                new MakeCoffeeCommand(espresso),
                new MakeCoffeeCommand(americano),
                new MakeCoffeeCommand(syrupMilkLatte)
        };

        for (OrderCommand command : commands) {
            command.execute();
        }
    }
}

标签:coffee,return,Coffee,cost,new,123,public
From: https://www.cnblogs.com/Aidan347/p/17874378.html

相关文章

  • 文心一言 VS 讯飞星火 VS chatgpt (123)-- 算法导论10.4 4题
    四、用go语言,对于一个含n个结点的任意有根树,写出一个O(n)时间的过程,输出其所有关键字该树以左孩子右兄弟表示法存储。文心一言:在计算机科学中,左孩子右兄弟表示法是一种用于表示树状结构的方法,其中每个节点都有两个指针:一个指向其第一个孩子(左孩子),另一个指向其下一个兄弟(右兄弟)。......
  • 将1234数字,组成不重复的3数字组合,并统计组合个数
    total=0forainrange(1,5):forbinrange(1,5):forcinrange(1,5):ifa!=banda!=candb!=c:total=total+1print(a,b,c)print(total) ......
  • 20231123CPU是如何把磁化点转换为电化点的?
    硬盘与CPU之间有三组线,三组线传递的都是一梭子一梭子(8个或8的倍数个)的电子这些电子来到CPU,再来到内存,本来就是一个一个的电子磁化点转为电化点是磁盘里面磁头的功劳磁头不光可以将磁鼓的磁极做翻转,也可以把检测到的极性又生成一个个的电子......
  • 解决google启动自动拦截打开hao123,360,2345等页面问题
    这里只有干货,直接上流程,希望能帮到不曾谋面的朋友1.流程一:2.流程二:3.流程三:生成了一个副本4.流程四:5.流程五:双击打开就可以了**6.流程六:留下你宝贵的脚印**......
  • 20231123
    2023/11/231798C-CandyStore只能说gcd,lcm的题目还是练少了,一些性质都不知道。对于一段可以用同一个标签的区间,我们知道他们的c是一样的,c=di*bi,每一个物品的bi固定,那么c就一定是lcm{bi..bn},因为c要能整除任何一个bi。然后我们来看可以自己决定的di,ai%di==0.而每一个物品的di=......
  • 20231123
    好久都没写过OI相关的东西了,累了。真的累了。刚刚lf给我说他明天会给我整一个容斥的单元小测。有点紧张,因为自己数学一直都很烂。还有容斥这么抽象的玩意,到时候估计会脑抽。累了。不能放弃啊。继续吧。今天和@Super_Cube吃饭的时候聊到了「关于力老师为什么只同意......
  • 每日总结20231123
    代码时间(包括上课)5h代码量(行):100行博客数量(篇):1篇相关事项:1、今天是周四,上午上了软件设计和软件需求分析,软件设计写的是中介者模式和备忘录模式,软件需求分析是验收的第一阶段,效果还不错。。2、今天下午的人机交互技术还差c/s的结构和flash动画没写,下周一需要验收,该加班了。3、......
  • C#.NET 循环字符串 V20231123
    C#.NET循环字符串V20231123 publicstaticboolIsIllegalOutTradeNo(stringOutTradeNo){foreach(chariteminOutTradeNo){if(item=='('||item==')'||item==','||item=......
  • 123
    #include<bits/stdc++.h>usingnamespacestd;intn;vector<int>v[50005];boolvis[50005],vis2[50005];inta[50005],ans=INT_MAX,fa[50005],s[50005];intdfs(intx){   intss=0;   if(vis[x])       return0;   if(v[x].size()==1&&x!=1)  ......
  • 123. 买卖股票的最佳时机 III(难)
    目录题目动态规划题目给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1:输入:prices=[3,3,5,0,0,3,1,4]输出:6......