我有一个是通过下面的类来表示两个数据模型:我可以在这里申请里氏替换原则
1)ImagesSet - 拥有2DImage的一个对象,每个2DImage都有自己的位置(原点(3DPoint),x轴,y轴(3DVector)和沿x和y轴的尺寸(以像素为单位)),但是相同的像素尺寸(以mm为单位),x和y之间的角度轴(90度)
此对象具有以下方法(以伪代码形式):
- AddImage(2DImage);
- RemoveImage(ImageIndex);
- number GetNumberOfImages();
- 2DImage Get2DImage(ImageIndex);
2)3DImage - 一个对象,它类似于第一但具有下列限制: 它可以存储2D图像仅具有沿x和y轴相同的x轴,y轴和尺寸。
在这种情况下推导出3DImage从ImagesSet? 从我的角度来看3DImage“是”ImagesSet(但有小的限制) 我可以在这里适用Liskov替代原则吗?
在这种情况下,如果我们试图添加一个图像与另一个x,y轴 - 方法AddImage要么会抛出异常或返回错误。
由于提前, 谢尔盖
顺便说一句,这个问题只发生在Circle和Ellipse的可变接口上。如果我们在它们的接口中只有读取方法,那么可以从椭圆派生圆(如果它有用的话)。 – maxim1000 2014-09-23 14:45:22