设计模式前期准备:设计原则与类图

设计原则

这里先将原则都罗列出来,在后续的具体模式中再具体讲解。

  • 单一职责原则:应该有且仅有一个原因引起类的变更
  • 里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象
  • 依赖倒置原则:面向接口编程
  • 接口隔离原则:接口尽量细化,同时接口中的方法尽量少
  • 迪米特法则:一个对象应该对其他对象有最少的了解
  • 开闭原则:类应该对扩展开放,对修改关闭

类图

类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等

在UML类图中,类包含三部分:

  • 类名
    一个字符串
  • 类的属性
    格式:可见性 名称:类型[=默认值]
    (1)可见性:对用于public,private,protected,default
    (2)名称:一个字符串
    (3)类型:数据类型
    (4)默认值:初始化的值
  • 类的操作
    格式:可见性 名称(参数列表)[:返回值类型]
    (1)参数列表:方法的参数列表,多个参数之间以逗号分隔
    (2)返回值类型:返回值的数据格式
    (3)可见性,名称同上
    示例:
    这里写图片描述

类的关系

  • 关联关系
    实线箭头表示,箭头指向(单向,指向自己,也可以双向)被依赖元素,表示一个类和另一个类有联系。
class Button{

}
class Form{
     //一对多的关系
    private List<Button> buttons;

}

min..max表示数量关系的区间。一个form中可以有零个或多个button,button不能单独存在。
这里写图片描述

  • 依赖关系
    虚线箭头表示,箭头指向被依赖的对象。表示一个类使用了另一个类,这种关系具有临时性特征,一个类的改变由于另一类而受影响。
class Car{
     public void move(){}
}
class Driver{
     public void drive(Car car){
         car.move();
     }
}

这里写图片描述

  • 泛化关系
    空心箭头实线表示,箭头指向父类。泛化关系表示类与类之间的继承关系。
class Animal{
     public void move(){}
}

class Student extends Animal{
     public void study(){}
}

这里写图片描述

  • 实现关系
    空心箭头虚线表示,箭头指向接口。表示类是接口所有特征和行为的实现。
interface IPeople{
     public void study();
}

class People implements IPeople{
     public void study(){}
}

这里写图片描述

  • 聚合关系
    带空心菱形头的实线表示,菱形头指向整体。表示整体与部分的关系,部分可以脱离整体而存在。
class Driver {
    private Car car = null;
    public void drive() {
        car.run();
    }
    public void setCar(Car c){
        car = c;
    }
}
class Car {
    public void run(){}
}

这里写图片描述

  • 组合关系
    带实心菱形头的实线表示,菱形头指向整体。表示整体与部分的关系,与聚合不同的是:这里整体与部分同生共死。
class Driver {
    private Car car = null;
    public Driver(Car car) {
    this.car = car;
    }
    public void drive() {
    car.run();
    }
}
class Car {
    public void run(){}
}

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值