《大话设计模式》 作者:程杰
面向对象
参考活字印刷:
- 可维护:要改,只需更改要改的位置。
- 可复用:用完一次后,可以在后面继续使用。
- 可扩展:如果要加字,直接往后添加就可以了。
- 灵活性好:可以横排,也可以竖排。
统一建模语言 UML(Unified Modeling Language)
类图
制图工具:draw.io
UML_drawio.xml
类
- 第一层代表类名称,如果是抽象类就使用斜体表示
- 第二层代表特性,类的属性和字段
- 第三层代表操作,类的方法
矩形框最前面的
- “+”:代表公开(public)
- “-“:代表私有(private)
- “#”:代表受保护的(protected)
补充
- 静态类/方法,名称添加下划线
- 属性/字段和有返回值的方法可以在最后添加冒号和类型

接口
有2种表示方法:
- 矩形表示法:顶端有<
>,其他和类相同 - 棒棒糖表示法:圆圈旁为接口名称,接口方法在实现类中出现
1.
2.
继承
空心三角加实线
实现接口
空心三角加虚线
关联
实线箭头
聚合
空心棱形加实线箭头
组合
实心棱形加实线箭头
依赖
虚线箭头
C#实现
/// <summary>/// 氧气/// </summary>public class Oxygen{}/// <summary>/// 水/// </summary>public class Water{}/// <summary>/// 动物/// </summary>public abstract class Animal{/// <summary>/// 生命/// </summary>public int Life;/// <summary>/// 新陈代谢/// </summary>/// <param name="oxygen">氧气</param>/// <param name="water">水</param>public void Metabolism(Oxygen oxygen, Water water){}/// <summary>/// 繁殖/// </summary>public void Reproduction(){}}/// <summary>/// 鸟/// </summary>public class Bird : Animal{/// <summary>/// 翅膀/// </summary>private Wing wing;/// <summary>/// 羽毛/// </summary>public int Feather;/// <summary>/// 描述 有角质喙没有牙齿/// </summary>public string Describe;public Bird(){wing = new Wing();}/// <summary>/// 下蛋/// </summary>public virtual void LayEggs(){}}/// <summary>/// 翅膀/// </summary>public class Wing{}/// <summary>/// 雁群/// </summary>public class WildGeeseAggregate{private WildWildGees[] wildWildGees;public void VForm_Flight(){}public void OneForm_Flight(){}}/// <summary>/// 雁/// </summary>public class WildWildGees : Bird, IFlight{/// <summary>/// 飞/// </summary>public void Fly(){}/// <summary>/// 下蛋/// </summary>public override void LayEggs(){base.LayEggs();}}/// <summary>/// 鸭/// </summary>public class Duck : Bird{/// <summary>/// 下蛋/// </summary>public override void LayEggs(){base.LayEggs();}}/// <summary>/// 企鹅/// </summary>public class Penguin : Bird{private Climate climate;/// <summary>/// 下蛋/// </summary>public override void LayEggs(){base.LayEggs();}}/// <summary>/// 气候/// </summary>public class Climate{}/// <summary>/// 飞翔/// </summary>public interface IFlight{/// <summary>/// 飞/// </summary>void Fly();}/// <summary>/// 说话/// </summary>public interface ISpeak{/// <summary>/// 说话/// </summary>void Speak();}/// <summary>/// 唐老鸭/// </summary>public class DonaldDuck : Duck, ISpeak{/// <summary>/// 说话/// </summary>public void Speak(){}}
