【发布时间】:2018-09-23 12:31:26
【问题描述】:
考虑我有一个客户类,它有 CustomerTypeA、CustomerTypeB、CustomerTypeC 作为子类。
为 Customer 类实现 ICustomer 接口并创建子类型对象(CustomerTypeA、CustomerTypeB、CustomerTypeC)会是更好的设计吗
interface ICustomer {}
class Customer : ICustomer {}
class CustomerTypeA : ICustomer {}
class CustomerTypeB : ICustomer {}
class CustomerTypeC : ICustomer {}
ICustomer obj;
obj = new CustomerTypeB();
或
使用客户类对象声明创建子类的对象?
class Customer {}
class CustomerTypeA : Customer {}
class CustomerTypeB : Customer {}
class CustomerTypeC : Customer {}
Customer obj;
obj = new CustomerTypeB();
我应该如何选择要遵循的方法?
换句话说,每个父对象都从接口实现是不是更好的设计?它给我带来了什么好处?
谢谢
【问题讨论】:
-
你使用什么编程语言?
-
它的 C#。只是出于好奇,编程语言如何影响解决方案?
-
目前尚不清楚您正在考虑哪些替代方案。在一个版本中,您将有一个没有任何接口的基类和子类,而在另一个版本中,您将只有接口(每个“子类”一个)并且没有基类?可能只有一个基本接口?
-
C++、Perl、JavaScript、Common Lisp 没有接口。 Perl 具有您可以使用的角色,具体取决于。 Haskell 有类(在某种程度上),但没有子类型。
-
@user3738870 添加了示例示例 sn-p,可能有助于更好地理解问题
标签: c# oop interface methodology design-principles