【设计模式 三】实战一杯咖啡之工厂模式

您所在的位置:网站首页 咖啡机生产 【设计模式 三】实战一杯咖啡之工厂模式

【设计模式 三】实战一杯咖啡之工厂模式

2024-07-17 15:47| 来源: 网络整理| 查看: 265

工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

简易UML图 «abstract» Coffee +getName() +addSugar() +addMilk() AmericanCoffee +getName() LatteCoffee +getName() Main + main CoffeeFactory +buyCoffer(cofferType) SimpleCoffeeFactory +createCoffee(cofferType) 继承 继承 调用 调用addMilk() 调用createCoffee() 调用addMilk() 调用addSugar() 需求分析

一杯咖啡有不同的口味,比如美式咖啡和意大利咖啡,我们又可以选择加糖加牛奶,保证咖啡的口感。

具体实现 package com.test.specific; /** * 咖啡 * * @author 12134 * */ public abstract class Coffee { /** * 获取咖啡品种 * * @return 咖啡品种 */ public abstract String getName(); /** * 加糖 */ public void addSugar() { System.out.println("加一份白糖"); } /** * 加牛奶 */ public void addMilk() { System.out.println("加一份牛奶"); } } package com.test.specific.impl; import com.test.specific.Coffee; /** * 美式咖啡 * @author 12134 * */ public class AmericanCoffee extends Coffee{ @Override public String getName() { return "美式咖啡"; } } package com.test.specific.impl; import com.test.specific.Coffee; /** * 拿铁咖啡 * @author 12134 * */ public class LatteCoffee extends Coffee{ @Override public String getName() { return "拿铁咖啡"; } } package com.test.fatory; import com.test.specific.Coffee; import com.test.specific.impl.AmericanCoffee; import com.test.specific.impl.LatteCoffee; public class SimpleCoffeeFactory { public Coffee createCoffee(String cofferType) { if (cofferType == null) { return null; } Coffee coffer = null; // 美式咖啡 if ("american".equalsIgnoreCase(cofferType)) { coffer = new AmericanCoffee(); // 拿铁咖啡 } else if ("latter".equalsIgnoreCase(cofferType)) { coffer = new LatteCoffee(); } else { throw new RuntimeException("本店暂没有你选购的咖啡。"); } return coffer; } } package com.test.fatory; import com.test.specific.Coffee; public class CoffeeFactory { /** * 购买咖啡 * * @param cofferType 咖啡品种 * @return 咖啡 */ public Coffee buyCoffer(String cofferType) { SimpleCoffeeFactory simpleCoffeeFactory = new SimpleCoffeeFactory(); Coffee coffer = simpleCoffeeFactory.createCoffee(cofferType); // 加入配料 coffer.addSugar(); coffer.addMilk(); return coffer; } } package com.test; import com.test.fatory.CoffeeFactory; import com.test.specific.Coffee; public class Main { public static void main(String[] args) { CoffeeFactory cofferFactory = new CoffeeFactory(); // 美式咖啡 Coffee coffer = cofferFactory.buyCoffer("american"); // 不够甜,再加一份白糖 coffer.addMilk(); System.out.println(coffer.getName()); } } 结果

加一份白糖 加一份牛奶 加一份牛奶 美式咖啡



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3