c# – 设计好的类和层次结构

我正在学习C#,并决定为矩阵及其功能编写一个类库,以获得一些经验和实践.

好的,现在我有以下类模型:

class Matrix // For rectangular matrices
{ }

class SquareMatrix : Matrix
{ }
class RowMatrix : Matrix
{ }
class ColumnMatrix : Matrix
{ }

每个类都有一个合适的构造函数来获取特定矩阵的维度或顺序.

现在,我的SquareMatrix类具有查找和返回行列式的特定功能.我在这里面临的问题是,如果我的库的用户创建了一个类型为Matrix且维度为n和n的实例,那么他将无法使用Determinant()方法,因为它只驻留在SquareMatrix中,而他的实例是Matrix类型.

其他方法也可能出现类似问题.

所以我的问题是:

>我的班级设计有缺陷吗?
>有没有办法解决这个问题? (或者(虽然它有一个难得的机会)我是否应该期望用户正确地实例化对象?)

谢谢大家 :)

最佳答案 你在这里与之抗争的是Liskov Substitution原则.基本上你需要做的就是不要使用旧的“……是……”来制定超级/子类.而是尝试使用“…可替代…”

如果您刚刚开始使用C#,那么您应该首先学习SOLID的原理.关于S和L的答案

这将帮助您使用L,http://www.oodesign.com/liskov-s-substitution-principle.html

检查一下SOLID,http://www.codeproject.com/Articles/703634/SOLID-architecture-principles-using-simple-Csharp

当你想要工作我和D打我,他们是我的最爱

戴尔

点赞