设计模式之UML
前言
Github:https://github.com/HealerJean
来源于自己买的一本书 图解设计模式 ,博主这里做了一份笔记记录
UML :统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言
1、类图
1、类与层次结构
1、三个框 依次是 类名、字段名、方法名
2、空心箭头表现了子类和父类之间的层次关系 ,子类指向父类
3、静态的属性(字段、方法)会加下划线
4、抽象的属性(类、方法)会以斜体的方式显示
public abstract class ParentClass {
int field1;
static char field2 ;
abstract void methodA ();
double methodB(){
return 0 ;
}
}
class childClass extends ParentClass {
void methodA(){
}
static void methodC(){
}
}
2、接口与实现
1、UML 以 ` «interface»` 表示接口
2、虚线箭头表现了实现类和接口直接的关系,又子类指向父类
public interface Printalble {
abstract void print() ;
abstract void newPage() ;
}
class PrintClass implements Printalble{
@Override
public void print() {
}
@Override
public void newPage() {
}
}
3、聚合
解释:我们将下面这种持有的关系成为聚合
1、将 带有空心◇菱形的实现表示聚合关系,从持有者指向被持有者
public class Color {
}
public class Fruit {
Color color ;
}
public class Basket {
Fruit [] fruits ;
}
4、可见性(访问控制)
1、 +
表示public方法和字段
2、-
表示private方法和字段
3、#
表示protect方法和字段
4、~
表示 default方法和字段
public class Something {
private int privateField ;
int packageField ;
protected int protectField ;
public int publicField ;
private void privateMethod() {} ;
void defaultMethod () {};
protected void protectMethod(){} ;
public void packageMethod{} ;
}
5、类的关联
2、时序图
类图表示的是静态关系,时序图表示的是随时间发生变化的动态行为,时序图的阅读顺序是沿着生命线从上而下阅读
1、最上方的三个长方形,冒号后面是类名
2、每个实例都有一条虚线,这个虚线叫生命线,可以理解为时间自上而下流失 ,虚线下面有个细长的长方形,表示实例处于某种活动中
3、黑色箭头表示调用,虚线箭头表示返回方法,有一些时序图会省略这个返回箭头
具体分析:
-
Client 实例调用Client:work
-
Client:work 调用了Server:open方法
-
Server:open调用完成返回
-
Client:work 调用了Server:print方法
-
Server:print 调用了Device:write方法
-
Device:write 调用完成返回
-
Server:print 调用完成返回
-
Client:work方法调用Server:close
-
Server:close 调用完成返回
-
Client:work 调用结束
public class Client {
Server server ;
void work(){
server.open();
server.print("HealerJean");
server.close();
}
}
class Server{
Device device ;
void open(){}
void print(String s) {
device.write(s);
}
void close(){}
}
class Device {
void write(String s) {}
}
3、设计模式分类
3.1、创建型
1、Singleton,单例模式:
2、Factory Method,工厂方法:使一个类的实例化延迟到了子类。
3、Prototype,原型模式:
4、Builder,建造模式:
5、Abstract Factory,抽象工厂:
3.2、行为型
1、Iterator,迭代器模式
2、Template Method 模板方法
3、Strategy,策略模式
4、Visitor,访问者模式
5、China of Responsibility,职责链模式
6、Mediator,中介者模式
7、Observer,观察者模式
8、Memento,备忘录模式
9、State,状态模式
10、Command,命令模式
11、Interpreter,解释器模式
3.3、结构型
1、Adapter,适配器模式
2、Bridge,桥接模式
3、Composite,组合模式
4、Decrator,装饰模式
5、Facade,外观模式
6、Flyweight,享元模式
7、Proxy,代理模式
-