• UML类图


    最近抽时间整理下设计模式。何为设计模式?设计模式的官方定义:代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。个人对设计模式的理解:

    • 设计模式是针对面向对象的(或基于对象的)。(所以我们写的面向过程式的代码,往往感觉无处下手使用设计模式)
    • 对于某一类问题,解决方案的总结

    UML 类图

    UML类图是类与类之间的关系设计图。掌握UML类图,更容易学习设计模式(设计模式就是有效的组织类与类之间的关系)。
    下面展示UML类图中类与类(或接口)之间的6种关系,以及对应到C#中的代码结构。

    泛化关系(generalization)

    语义:类与类的继承关系。继承关系为 is-a的关系;两个对象之间如果可以用 is-a 来表示,就是继承关系。如猫cat是动物animal。

    C#代码体现为继承类

    public class Animal
    {
    }
    public class Cat : Animal
    {
    }
    

    实现关系(realize)

    语义:类之间Can的关系,有“契约”、“能力”或“功能”的意思。如鸭子有游泳的“能力”:

    C#代码体现为继承接口

    public interface ISwim 
    {
    	void Swim();
    }
    
    public class Duck : ISwim
    {
    	public virtual void Swim()
    	{
    		throw new System.NotImplementedException();
    	}
    }
    

    聚合关系(aggregation)

    语义:整体由个体构成。如班级由学生构成(班级为整体,学生为个体)。

    注意菱形箭头方向
    C#代码体现为一个类包含另一个类的集合成员

    public class Student
    {
    }
    public class Class
    {
    	public virtual IEnumerable<Student> Student
    	{
    		get;
    		set;
    	}
    }
    

    组合关系(composition)

    语义:整体由部分构成,强依赖的特殊聚合关系,对整体来说部分必须存在。如汽车离开轮胎就不可正常驾驶,聚合关系的依赖没有那么强,如少一个学生照样可以上课。

    C#代码体现为一个类包含另一个类的集合成员

    public class Tyre
    {
    }
    
    public class Car
    {
    	public virtual IEnumerable<Tyre> Tyre
    	{
    		get;
    		set;
    	}
    }
    

    关联关系(association)

    语义:不同类对象之间的结构关系(一种静态关系,与运动状态无关)

    C#代码体现为:一个类包含另一个类的成员。

    public class Ticket
    {
    }
    
    public class Passenger
    {
    	public virtual Ticket Ticket
    	{
    		get;
    		set;
    	}
    }
    

    依赖关系(dependency)

    语义:一个对象在运行期间会用到另一个对象

    C#代码体现为:一个类中的函数的参数或内部包含另一个类。

    public class Bike
    {
    }
    public class Person
    {
    	public virtual void GoToSubline(Bike bike)
    	{
    		throw new System.NotImplementedException();
    	}
    }
    
    

    结束语

    接下来开始一系列设计模式的总结。关于是否需要学习设计模式可谓众说纷纭,我认为还是必要的,但是千万不要用死。

    1. 面试中经常被问到(这个估计是加分项)
    2. 阅读大牛代码更容易(理清关系一个生动的设计模式名字就能清楚程序结构)
    3. 为自己成为大牛做准备(先对设计模式有个印象,慢慢自己真正掌握了再用)
  • 相关阅读:
    Java实现 蓝桥杯 算法训练 画图(暴力)
    Java实现 蓝桥杯 算法训练 画图(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 Cowboys
    Java实现 蓝桥杯 算法训练 Cowboys
    55. Jump Game
    54. Spiral Matrix
    50. Pow(x, n)
  • 原文地址:https://www.cnblogs.com/LoveTomato/p/8330494.html
Copyright © 2020-2023  润新知