简单工厂模式

简单工厂模式

Android小彩虹2021-07-09 11:56:24200A+A-

一、定义

简单工厂模式(Simple Factory Pattern),又称为静态工厂方法模式(Static Factory Pattern),属于类创建型模式。在简单工厂模式里通过不同的参数,返回不同的类实例。

二、简单工厂的UML类图

classDiagram
class Product{
    +use() void
}
<<interface>> Product
Product <|-- ConcreteProductA
Product <|-- ConcreteProductB
Factory --> ConcreteProductA
Factory --> ConcreteProductB
class ConcreteProductA{
    +use() void
}
class ConcreteProductB{
    +use() void
}
class Factory{
    +PRODUCT_A String
    +PRODUCT_B String
    +createProduct(type String)$ Product
}

三、代码实现

简单工厂模式包含三个角色:

  • Product:抽象产品角色

抽象产品角色是所创建的所有类的父类,定义了公共的接口

interface Product{
    public void use();
}
  • ConcreteProduct:具体产品角色
class ConcreteProductA implements Product{
    public void use(
        System.out.print("ConcreteProductA use()");
    );
}

class ConcreteProductB implements Product{
    public void use(
        System.out.print("ConcreteProductB use()");
    );
}
  • Factory:工厂角色
public static Factory{
    public static String PRODUCT_A = "A";
    public static String PRODUCT_B = "B";
    
    public static Product createProduct(String type){
        if(PRODUCT_A == type){
            return ConcreteProductA();
        }else if(PRODUCT_B == type){
            return ConcreteProductB();
        }
        return NULL;
    }
}

四、优点

  • 使对象的创建和对象的使用分离。
  • 不用知道具体的创建对象名称。只需记住对应的参数即可,减少记忆量。
  • 工厂通过静态方法来创建对象,使用方便。

五、缺点

  • 新增具体的创建对象时,需要修改工厂创建类的方法,违背了开闭原则。
  • 新增的产品类型较多时,会造成工厂方法过于复杂,不利于维护。
  • 增加了类的数量。多了一个工厂类和抽象产品类。

六、使用场景

Java加密技术 获取不同加密算法的密钥生成器:

KeyGenerator keyGen=KeyGenerator.getInstance("DESede");

七、总结

对于如何创建对象不关心和一些复杂的对象创建可以使用简单工厂来实现。

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1

联系我们