星球狂想战队|「设计模式」SimpleFactory(简单工厂模式)
版权声明【星球狂想战队|「设计模式」SimpleFactory(简单工厂模式)】本文由“开发者手册”原创 , 如需转载 , 请标明出处 。
简单工厂模式基本介绍简单工厂模式把类实例化对象的操作放到一个工厂类中 , 通过参数决定实例化哪个类的实例 。
适用场景
简单工厂模式适用于创建对象比较少的情况
模式特点
只需要传入一个正确参数 , 就可以获得所需的对象
如果你还想学习其他设计模式 , 请参考我的另一篇文章:「设计模式」设计模式总概
类图
主要角色说明:
- Product:抽象产品类
- ConcreteProduct:具体产品类
- SimpleFactory:简单工厂类
/** * 抽象的汽车类 */public abstract class Car {/*** 汽车名称*/public abstract String name();}
ConcreteProduct(具体产品类)/** * 奔驰汽车 */public class Benz extends Car {@Overridepublic String name() {return "i am benz";}}
/** * 宝马汽车 */public class Bmw extends Car {@Overridepublic String name() {return "i am Bmw";}}
SimpleFactory(简单工厂类)/** * 简单工厂类 */public class SimpleFactory {/*** 根据传入的类型决定实例化哪个具体产品* 新增产品时 , 需要修改工厂类* @param type* @return*/public static Car produce(String type) {if ("bmw".equalsIgnoreCase(type)) {return new Bmw();} else if ("benz".equalsIgnoreCase(type)) {return new Benz();}return null;}/*** 通过反射机制生成对象实例* 增加新产品时 , 不需要修改工厂类* @param clazz* @return*/public static Car produce(Class clazz) {try {return (Car) clazz.newInstance();} catch (Exception e) {e.printStackTrace();}return null;}}
测试类/** * 简单工厂模式测试类 */public class SimpleFactoryTest {public static void main(String[] args) {Car car = SimpleFactory.produce("bmw");System.out.println(car.name());//输出:i am Bmwcar = SimpleFactory.produce(Benz.class);System.out.println(car.name());//输出:i am Benz}}
结束语希望我的文章能给您带来帮助 , 如果您有什么疑问 , 可以给我留言 , 我会在第一时间给您提供解答 。 如果您有好的建议或想法 , 也欢迎给我留言 。推荐阅读
- 爱游戏的甲子|G2战队“杀人诛心”,阿P用两句话嘲讽LCK战队,DWG被逼入绝境
- 老猫要有腹肌|AG超玩会战队人气位列榜首,久诚人气不及一诺
- 财经女记者部落|老板却坚决拒绝粉丝经济,选手只招大学生,电竞战队斩获《炉石传说》联赛冠军
- 电竞小肥仔|和平精英:战队专属皮肤推荐合集,最后JDE队服堪比至尊金龙!
- 海军陆战队|美两大军种争资源,抢着对抗中国?美专家:对手导弹太多,应互补
- 4am战队|绝地求生秋季赛决赛第一日-rng登顶,4am稳定,ifty、tianba拉闸
- 麻醉说游戏|KPL秋季赛一半赛程已过!这两支战队即将提前锁定胜者组?
- 指尖上的王者|KPL五周T队排名,“天王级”战队只有两个,TS被踢出队列
- tes战队|“给阿水下了毒”就在今天,Rookei对TES让二追三做出评价,差点吓跑了!
- dwg战队|“打LCK胜率高有秘诀”就在今天,G2晋级4强全员喊话DWG,你们不是我对手!