简单工厂模式(Simple Factory Pattern)

preface : 设计模式的结合类图会比较明晰, 下面使用将简短说下类图相关的内容. 因为发现了一篇很详细的讲解设计模式的网站, 所以一下很多内容是根据这个站中的内容所写. 链接: https://design-patterns.readthedocs.io/zh_CN/latest/. 如有问题请到留言板.

类图中的几种关系

  • 泛化关系(generalization): 泛化关系是一种继承关系, 用一条带空心箭头的直接表示.
  • 实现关系(realize): 实现关系可类比java中的实现,实现关系用一条带空心箭头的虚线表示.
  • 聚合关系(aggregation): 表示整体由部分构成的语义,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在. 聚合关系用一条带空心菱形箭头的直线表示.
  • 组合关系(composition): 与聚合关系一样,组合关系同样表示整体由部分构成的语义,但组合关系是一种强依赖的特殊聚合关系,如果整体不存在了,则部分也不存在了. 组合关系用一条带实心菱形箭头直线表示.
  • 关联关系(association): 关联关系描述不同类的对象之间的结构关系;它是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的. 关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向就会在被知道方有箭头. 关联关系是用一条直线表示的.
  • 依赖关系(dependency): 依赖关系描述一个对象在运行期间会用到另一个对象的关系, 与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化. 依赖关系是用一套带箭头的虚线表示的.
  • 如图: 类图-关系

简单工厂模式(Simple Factory Pattern)

模式结构

 - 工厂角色(Factory): 工厂角色负责实现创建所有实例的内部逻辑
 - 抽象产品角色(Product): 抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口
 - 具体产品角色(ConcreteProduct): 具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例.

类图

  • 如图: 类图-工厂

    模式应用

    • JDK类库中广泛使用了简单工厂模式,如工具类java.text.DateFormat,它用于格式化一个本地日期或者时间

      public final static DateFormat getDateInstance();
      public final static DateFormat getDateInstance(int style);
      public final static DateFormat getDateInstance(int style,Locale
      locale);
      
    • Java加密技术

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

结尾: 这里占时写到这里, 继续膜拜下https://design-patterns.readthedocs.io/zh_CN/latest/.

原文地址:https://www.cnblogs.com/brandon-zhang/p/14482182.html