装饰器模式:原理、应用与挑战
1. 引言
在图形应用程序中,我们常常需要处理点和线等基本图形元素。数学模型中的点和线与图形界面上显示的点和线存在差异,图形对象通常包含比数学对象更多的信息。装饰器模式为解决这类问题提供了有效的方案。
2. 点和线的装饰器实现
2.1 点的装饰器
在图形应用中,数学意义上的二维点只有 x 和 y 坐标,为了将其用于图形显示,可能需要添加额外信息,如点的大小、颜色等。一种常见的做法是使用继承,但这种方式存在一些问题。例如:
class Point
{
public double X, Y;
}
class GPoint : Point
{
public string Color;
}
这种继承方式会使 Point 难以转换为结构体,因为结构体是值类型,通常用于表示轻量级的数据集合。并且继承可能会导致一些不必要的成员被继承,例如 ToString() 方法,在子类中往往需要重写。
更好的做法是使用装饰器模式:
public readonly struct Point
{
public readonly double X, Y;
}
class GPoint
{
public Point Point;
public string Color;
超级会员免费看
订阅专栏 解锁全文
1071

被折叠的 条评论
为什么被折叠?



