设计模式之UML
前言
博主github
博主个人博客http://blog.healerjean.com
来源于自己买的一本书 图解设计模式 ,博主这里做了一份笔记记录
UML :统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言
1、类图
1、类与层次结构
1、三个框 依次是 类名、字段名、方法名
2、空心箭头表现了子类和父类之间的层次关系 ,子类指向父类
3、静态的属性(字段、方法)会加下划线
4、抽象的属性(类、方法)会以斜体的方式显示
[外链图片转存失败(img-M50pmEtM-1566550215181)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1558668339516.png)]
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、虚线箭头表现了实现类和接口直接的关系,又子类指向父类
[外链图片转存失败(img-YTHEYsBE-1566550215182)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1558672174384.png)]
public interface Printalble {
abstract void print() ;
abstract void newPage() ;
}
class PrintClass implements Printalble{
@Override
public void print() {
}
@Override
public void newPage() {
}
}
3、聚合
解释:我们将下面这种持有的关系成为聚合
1、将 带有空心◇菱形的实现表示聚合关系,从持有者指向被持有者
[外链图片转存失败(img-PYEB96Tv-1566550215183)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1558672542434.png)]
public class Color {
}
public class Fruit {
Color color ;
}
public class Basket {
Fruit [] fruits ;
}
4、可见性(访问控制)
1、 +
表示public方法和字段
2、-
表示private方法和字段
3、#
表示protect方法和字段
4、~
表示 default方法和字段
[外链图片转存失败(img-DsYdC3N8-1566550215183)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1558672815903.png)]
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、类的关联
[外链图片转存失败(img-Vl8qlTaA-1566550215184)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1558673034009.png)]
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) {}
}
感兴趣的,欢迎添加博主微信
哈,博主很乐意和各路好友交流,如果满意,请打赏博主任意金额,感兴趣的在微信转账的时候,备注您的微信或者其他联系方式。添加博主微信哦。
请下方留言吧。可与博主自由讨论哦
微信 | 微信公众号 | 支付宝 |
---|---|---|