星球狂想战队|「设计模式」SimpleFactory(简单工厂模式)

版权声明【星球狂想战队|「设计模式」SimpleFactory(简单工厂模式)】本文由“开发者手册”原创 , 如需转载 , 请标明出处 。
简单工厂模式基本介绍简单工厂模式把类实例化对象的操作放到一个工厂类中 , 通过参数决定实例化哪个类的实例 。
适用场景
简单工厂模式适用于创建对象比较少的情况
模式特点
只需要传入一个正确参数 , 就可以获得所需的对象
如果你还想学习其他设计模式 , 请参考我的另一篇文章:「设计模式」设计模式总概
类图
星球狂想战队|「设计模式」SimpleFactory(简单工厂模式)主要角色说明:

  • Product:抽象产品类
  • ConcreteProduct:具体产品类
  • SimpleFactory:简单工厂类
代码实现Product(抽象产品类)
/** * 抽象的汽车类 */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}} 结束语希望我的文章能给您带来帮助 , 如果您有什么疑问 , 可以给我留言 , 我会在第一时间给您提供解答 。 如果您有好的建议或想法 , 也欢迎给我留言 。
星球狂想战队|「设计模式」SimpleFactory(简单工厂模式)


    推荐阅读