java – 工厂模式动态方法
发布时间:2020-12-14 05:30:56 所属栏目:Java 来源:网络整理
导读:我正在努力了解工厂模式.如果有很多实现,那么我的工厂模式将会有很多如果还是开关的情况.而且每次我介绍一个新的实现,我应该更改我的工厂代码 像下面的例子,如果让我们假设狗鸭正在实施宠物界面,如果许多动物实现宠物界面,我的工厂会很长时间,如果有其他的代
我正在努力了解工厂模式.如果有很多实现,那么我的工厂模式将会有很多如果还是开关的情况.而且每次我介绍一个新的实现,我应该更改我的工厂代码
像下面的例子,如果让我们假设狗鸭正在实施宠物界面,如果许多动物实现宠物界面,我的工厂会很长时间,如果有其他的代码或开关案例,那么明天.有什么办法可以用更多的动态方法解决这个问题吗? package com.javapapers.sample.designpattern.factorymethod; //Factory method pattern implementation that instantiates objects based on logic public class PetFactory { public Pet getPet(String petType) { Pet pet = null; // based on logic factory instantiates an object if ("bark".equals(petType)) pet = new Dog(); else if ("quack".equals(petType)) pet = new Duck(); return pet; } 如果动物生长 if ("bark".equals(petType)) pet = new Dog(); else if ("quack".equals(petType)) pet = new Duck(); else if ("mno".equals(petType)) pet = new MNO(); else if ("jkl".equals(petType)) pet = new JKL(); else if ("ghi".equals(petType)) pet = new GHI(); else if ("def".equals(petType)) pet = new DEF(); ...... else if ("abc".equals(petType)) pet = new ABC(); return pet 解决方法
我认为有一个动态的方法:
>在你的工厂,你需要一个Map< String,Class&延长宠物>>>在每个类的静态构造函数中,它扩展了Pet,用这样的映射来注册它.>比创建一个类将只是map.get(pet).newInstance(当然,你必须检查null) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |