设计模式
1.设计模式七大原则
-
单一职责
-
里氏替换
-
在使用继承时,子类尽量不要重写父类的方法
-
所有引用基类的地方都必须能透明地使用其子类的对象
-
在适当的情况下建议使用聚合、组合或者依赖来解决问题
-
-
依赖倒置
-
高层模块不依赖于低层模块,两者都应该依赖于其抽象
-
抽象不应该依赖细节
-
-
接口隔离
一个类对另一个类的依赖应该建立在最小的接口上
-
开闭原则
- 对扩展开放,对修改关闭
-
迪米特法则
- 一个类对自己依赖的类知道的越少越好,即最少知道原则
-
合成复用
2.UML类图
2.1 分类
-
用例图
-
静态结构图:类图、对象图、包图、组件图、部署图
-
动态图:时序图、协作图、状态图、活动图
2.2 类图
2.2.1 概念
类图是用于描述类本身的组成(属性、方法)和类之间的各种静态股息。其中,类之间的关系有:依赖、继承(泛化)、实现、关联、聚合和组合。
2.2.2 关系-依赖
只要在类中用到对方,那么两者之间就必然存在依赖关系
2.2.3 关系-泛化
泛化实际上就是继承关系,是依赖关系的特例
2.2.4 关系-实现
A类实现B接口,是依赖关系的特例
2.2.5 关系-关联
类与类之间的联系,是依赖关系的特例。关联具有导航性和多重性
导航性:即双向关联或单向关联
多重性:即关联双方的类可以拥有对方类多少个对象
2.2.6 关系-聚合
表示整体和部分的关系,整体和部分可以分开,是关联关系的特例
2.2.7 关系-组合
表示整体和部分的关系,整体和部分不可以分开,是关联关系的特例
3. 设计模式
3.1 分类
-
创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式
-
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
-
行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、职责链模式。
3.2 创建型模式
3.2.1 单例模式
保证整个系统中某个类只有一个对象实例存在
3.2.1.1 懒汉式-线程不安全
实际开发中不能使用此种方法
public class SingleTonLazy {
private SingleTonLazy(){
}
private static SingleTonLazy instance;
public static SingleTonLazy getInstance(){
if(instance == null){
//此处在多线程下可能会导致创建多个实例
instance = new SingleTonLazy();
}
return instance;
}
}
3.2.1.2 懒汉式-使用同步方法实现线程安全
实际开发中不推荐使用此种方法,因为同步方法会导致效率低下
public class SingleTonLazySyncMethod {
private SingleTonLazySyncMethod(){
}
private static SingleTonLazySyncMethod instance;
public static synchronized SingleTonLazySyncMethod getInstance(){
//此处使用同步方法解决多线程下线程不安全问题
if(instance