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/.