最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 设计模式 - UML类图

    正文概述 掘金(Zoem)   2021-04-02   552

    UML 类图

    在介绍 23 种设计模式之前需要简单说明下一些相关概念,方便后面提到其他设计模式时能够快速理解。

    UML 类图是解释类的基础以及各个类之间关系的图。

    类图基础属性

    设计模式 - UML类图

    + 表示 public

    public 可以修饰属性或者方法,被 public 修饰的属性或方法只可以被类本身、子类、实例等使用。

    class People {
      public name = "people"
    
      getName() {
        return this.name;
      }
    }
    
    class Bob extends People {
      getName() {
        return this.name;
      }
    }
    
    new People().name;   // "people"
    new Bob().name;      // "people"
    new Bob().getName(); // "people"
    

    - 表示 private

    private 可以修饰属性或者方法,被 private 修饰的属性或方法只可以被类本身使用。

    class People {
      private name = "people"
      getName() {
        return this.name;
      }
    }
    
    class Bob extends People {
      getName() {
        return this.name; // TSError: 属性“name”为私有属性,只能在类“People”中访问
      }
    }
    
    new People().name;    // TSError: 属性“name”为私有属性,只能在类“People”中访问。
    

    # 表示 protected

    protected 可以修饰属性或者方法,被 protected 修饰的属性或方法只可以被类本身、子类使用。

    class People {
      protected name = "people"
      protected getName() {
        return this.name;
      }
    }
    
    class Bob extends People {
      getName2() {
        return this.getName();
      }
    }
    
    new People().name;      // TSError: 属性“name”受保护,只能在类“People”及其子类中访问。
    new People().getName(); // TSError: 属性“getName”受保护,只能在类“People”及其子类中访问。
    new Bob().name;         // TSError: 属性“name”受保护,只能在类“People”及其子类中访问。
    new Bob().getName();    // TSError: 属性“getName”受保护,只能在类“People”及其子类中访问。
    new Bob().getName2();   // "people"
    

    _ 下划线表示 static

    static 可以修饰属性或者方法,用来表示静态属性或静态方法,被 static 修饰的方法只可以在类未实例化时使用。

    class People {
      static name = "people"
    
      static getName() {
        return this.name;
      }
    }
    People.name;         // "people"
    People.getName();    // "people"
    new People().name    // TSError: 属性“name”在类型“People”上不存在。
    new People().getName();  // TSError: 属性“getName”在类型“People”上不存在。
    

    斜体表示 abstract

    abstract 只可以修饰方法或类,用来表示抽象方法,该修饰符只能在抽象类中使用,且被修饰的方法不能由该抽象基类实现,必须由其派生类实现。注意抽象类无法实例化。

    abstract class People {
      name = "people"
      abstract getName(): string
    }
    
    class Bob extends People {
      getName() {
        return this.name;
      }
    }
    
    new Bob().getName();   // "people"
    new People();          // TSError: 无法创建抽象类的实例。
    

    类之间的关系

    在UML类图中,常见的有以下几种关系:

    • 依赖(Dependency)
    • 关联(Association)
    • 聚合(Aggregation)
    • 组合(Composition)
    • 继承(Generalization)
    • 实现(Implementation)

    依赖关系(Dependency)

    UML 图中用下面这种方式表示依赖关系

    设计模式 - UML类图

    class Car {
      move() {
        // ...
      }
    }
    
    class People {
      drive(car: Car) {
        car.move();
      }
    }
    
    const people = new People();
    const car = new Car();
    
    people.drive(car);
    

    用 UML 类图表示为

    设计模式 - UML类图

    关联关系(Association)

    UML 图中用下面这种方式表示关联关系 (如果是双向关联关系可以省略箭头),当然还有自关联,如节点类(Node)的成员又是节点 Node 类型的对象

    设计模式 - UML类图

    class Car {
      move() {
        // ...
      }
    }
    
    class Driver {
      car: Car = new Car()
    
      move() {
        this.car.move();
      }
    }
    
    

    用 UML 类图表示为

    设计模式 - UML类图

    聚合关系(Aggregation)

    UML 图中用下面这种方式表示聚合关系

    设计模式 - UML类图

    class Engine {
      // ...
    }
    class Car {
      engine: Engine;
      setEngine(engine: Engine) {
        this.engine = engine;
      }
    }
    

    用 UML 类图表示为 设计模式 - UML类图

    组合关系(Composition)

    UML 图中用下面这种方式表示组合关系

    设计模式 - UML类图

    class Mouth {
      // ...
    }
    class Head {
      mouth: Mouth = new Mouth();
    }
    

    用 UML 类图表示为

    设计模式 - UML类图

    继承关系(Generalization)

    UML 图中用下面这种方式表示继承关系

    设计模式 - UML类图

    class People {
      name: string;
      age: number;
    }
    
    class Student extends People {
      studentNo: number;
      study: () => void;
    }
    
    class Teacher extends People {
      teacherNo: number;
      teach: () => void;
    }
    

    用 UML 类图表示为

    设计模式 - UML类图

    实现关系(Implementation)

    UML 图中用下面这种方式表示实现关系

    设计模式 - UML类图

    interface People {
      say: () => void;
    }
    
    class Student implements People {
      say() {
        console.log("Student");
      }
    }
    
    class Teacher implements People {
      say() {
        console.log("Teacher");
      }
    }
    

    用 UML 类图表示为

    设计模式 - UML类图


    起源地下载网 » 设计模式 - UML类图

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元