《大话设计模式》 作者:程杰
面向对象
参考活字印刷:
- 可维护:要改,只需更改要改的位置。
- 可复用:用完一次后,可以在后面继续使用。
- 可扩展:如果要加字,直接往后添加就可以了。
- 灵活性好:可以横排,也可以竖排。
统一建模语言 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()
{
}
}