• 设计模式之简单工厂模式


    (一) 什么是简单工厂设计模式

      简单工厂模式又称为静态工厂方法模式,是一种的对象的创建模式。通过专门定义一个工厂类来创建其他类的实例,被创建的实例通常都有共同的父类或实现同一接口。

    (二) 简单工厂模式中的角色

    1. 工厂角色(Creator)

       简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以直接被外界类调用创建所需产品对象。

    1. 抽象角色(Product)

      抽象角色是简单工厂模式所创建所有对象的父类,它负责描述所有实例所共有的公共接口

    1. 具体产品(Concrete Product)

      具体产品所创建的具体对象

    (三) 简单工厂案例

      以下描述了一个简单工厂类的具体实现,工厂角色为FruitFactory,抽象角色为Fruit,具体角色为Apple、Orange

    public interface Fruit {
        void get();
    }
    
    
    public class Apple implements Fruit {
    
        @Override
        public void get() {
            System.out.println("苹果采摘");
        }
    
    }
    
    
    public class Orange implements Fruit {
    
        @Override
        public void get() {
            System.out.println("橘子采摘");
        }
    
    }
    
    
    public class FruitFactory {
        public static Fruit getFruit(String fruit) {
            Fruit f = null;
            try {
                Class clazz = Class.forName(fruit);
                f = (Fruit) clazz.newInstance();
            } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
                e.printStackTrace();
            }
            return f;
        }
    }
     可根据传入的信息,产生自己想要的对象
    public class Test {
        public static void main(String[] args) {
            Fruit apple = FruitFactory.getFruit("Apple");
            Fruit orange = FruitFactory.getFruit("Orange");
            apple.get();
            orange.get();
        }
    }

     (四) 简单工厂模式的优缺点

      优点:

        用户在使用工厂类去创建所需实例时,无需了解这些对象是如何创建以及如何组织的,用户可以根据外界传入的信息,判断生产什么样的对象

        可在无需修改原来代码的情况下,增加新的具体类,提高了程序的可扩展性和灵活性

      缺点:

        工厂类集中了所有实例创建的逻辑,一旦工厂类出现问题,所有的客户端都会受到牵连。

        随着产品种类的增多,就会出出现不同的抽象类或借口,违背了单一职责的原则

  • 相关阅读:
    既使用maven编译,又使用lib下的Jar包
    Mac idea 快捷键
    spring-boot集成Springfox-Swagger2
    java 反射获取类的静态属性值
    springmvc防止重复提交拦截器
    反射调用 java bean的set和get方法
    JSONObject 自定义过滤配置
    maven自定义脚手架(快速生成项目)
    Jackson序列化实例
    EntityManager的使用
  • 原文地址:https://www.cnblogs.com/gdy1993/p/9150107.html
Copyright © 2020-2023  润新知