当前位置: 首页 > news >正文

工厂模式的扩展

工厂模式的扩展

1.添加配置文件,
american latte

配置高文件

2.。修改工厂方法

public abstract class Coffee {
    //咖啡名
    public abstract String getName();
    //加糖
    public void addSuger(){
        System.out.println("Suger");
    }

    //加牛奶
    public void addMilk(){
        System.out.println("Milk");
    }
}
public class LatteCoffee extends Coffee {
    @Override
    public String getName() {
        return "拿铁咖啡";
    }
}

public class AmericanCoffee extends Coffee {
    @Override
    public String getName() {
        return "美式咖啡";
    }
}



工厂方法

public class CoffeeFactory {
    //加载配置文件,获取配置文件中配置的全类名,并创建该类的对象进行存储
    //定义容器对象存储咖啡对象
    private static Map<String,Coffee> map=new HashMap<>();
    static {
        //创建Properties对象
        Properties p=new Properties();
        //调用p对象中的load方法进行配置文件的加载
        InputStream is = CoffeeFactory.class.getClassLoader().getResourceAsStream("beans.properties");
        try{
            p.load(is);
            //遍历Propertise集合对象
            Set<Object> keys = p.keySet();
            for(Object key : keys){
                //根据键获取值
                String className=p.getProperty((String) key);
                //获取字节码对象
                Class clazz = Class.forName(className);
                //通过反射技术创建对象
                Coffee obj = (Coffee) clazz.newInstance();
                map.put((String)key,obj);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    //根据名称获取对象
    public static Coffee createCoffee(String name){
        return map.get(name);
    }
}

实例

public class Client {
    public static void main(String[] args) {
        CoffeeFactory.createCoffee("american");
        System.out.println(coffee.getName());
        System.out.println("=========");

        Coffee latte = CofffeeFctory.crateCoffee("latte");
        System.out.println(latte.getName());
    }
}

相关文章:

  • 2.7 滑动窗口专题:串联所有单词的子串
  • 2024浙江大学计算机考研上机真题
  • 日志、类加载器、XML(配置文件)
  • 如何免费无限制使用 Cursor 软件:完整指南
  • 生活中的可靠性小案例12:类肤材质老化发粘问题
  • git操作大全
  • EDAS:投稿经验-word版本-问题解决
  • 微服务架构: SpringCloud实战案例
  • 计算机网络开发--阻塞与非阻塞、同步与异步、http协议
  • 使用 PaddleNLP 在 CPU(支持 AVX 指令)下跑通 llama2-7b或DeepSeek-r1:1.5b 模型(完成度80%)
  • VUE2与VUE3的底层监听工具对比:Object.defineProperty() (Vue 2) 与 Proxy (Vue 3)
  • 树莓派急速安装ubuntu;映射磁盘与储存磁盘文件;ubuntu映射整个工程;保存系统工作状态
  • DOM4J解析XML, 修改xml的值
  • Springboot+mybait查询功能撰写
  • prometheus自定义监控(pushgateway和blackbox)和远端存储VictoriaMetrics
  • 深度解析React Native底层核心架构与演进之路
  • 零基础keil:设置注释快捷键
  • 【RNN神经网络】序列模型与RNN神经网络
  • 2.创建QT项目
  • 算法——层序遍历和中序遍历构造二叉树
  • 部门网站建设怎么做/怎么样在百度上推广自己的产品
  • 寮步镇仿做网站/seo优化技巧
  • 女生做网站编辑好吗/网站是否含有seo收录功能
  • 舟山网站建设开发/微信营销的成功案例
  • 银川网站建设多少钱/嘉兴seo报价
  • 网站 分析/网络营销课程个人感悟