[英]Is this design a good idea - Interfaces and Abstract class
我希望能够做如下的事情:
//non-generic
var MyTable = new Table();
string name = MyTable.Name;
IEnumerable<String> rows = MyTable.Rows;
//generic
var MyTableGeneric = new Table<MyType>();
string name = MyTableGeneric.Name;
IEnumerable<MyType> rows = MyTableGeneric .Rows;
会是这样的事情:
http://img81.imageshack.us/img81/427/diagramcm3.jpg
或者这会更好:
http://img301.imageshack.us/img301/4136/presentation1nh9.jpg
对不起,如果这很难理解我想要的东西,基本上我有两个对象将共享comman属性,除了那些将是通用的行集合。 我想以最干净的方式做到这一点。
对不起我的蹩脚图表,用powerpoint制作:)
我会说第二种设计更好。 更少的项目和更容易的继承路径。
第一个设计有不必要的接口,除非您实现了实现接口的其他东西,但不从基类继承,否则您不需要这些接口。
Table
和Table<string>
之间有什么区别? 换句话说,你能不能只使用Table<string>
作为非泛型形式?
如果你去的第二个选项,我建议你重命名一个Rows
特性-你可以逃脱通过隐藏等不同类型的两个属性,但它不会是愉快的。
您的Table
类型实际上有多少行为? 如果它实际上只是一个容器,你可能不需要一个接口 - 但如果它背后有重要的逻辑,你可能想要一个接口,这样你就可以在测试使用它的类时模拟出来。
我会在行中使用泛型,而不涉及基类中的字符串,并且非泛型继承Table类。 考虑不使用抽象类。
Table<T> -> Table:Table<string>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.