我该如何重构这个?

Zac*_*lan 3 .net c# oop refactoring interface

所以在我的应用程序中,我有几个不同的客户被"服务".每个客户都有自己的各种类的实现,这些类都基于接口.

随着最新客户的增加,我注意到会有很多来自其他客户的代码重复,但另一个客户与其他客户无关.

我已经为其他几个客户提供了默认实现,并根据需要推出了新的实现.

我的问题是我如何重构这个仍然保持代码干净?如果我是这个代码库的新手,我希望每个客户使用这些类的默认或他们自己的实现......但这是很多重复.

STW*_*STW 5

考虑使用abstract带有abstractvirtual成员的基类.抽象成员本质上等同于接口成员(它们没有内置行为,它们只保证方法存在),而virtual成员有一个默认实现,可以被派生类覆盖.

你的问题实在太模糊了,无法全面回答,但这里是你如何利用继承.

如果您希望所有类使用成员的相同实现,则该成员可以在基类中实现.

如果您希望每个类都有自己的成员实现,那么您可以使用带有abstract成员的基类或接口.

如果您希望某些类使用相同的实现而其他类使用不同的实现,则在基类中实现默认行为并根据需要覆盖它.


我的主要观点是OOP在基础/抽象/具体类中有多少或几乎没有功能.没有银弹答案,有时你的基础类将是骷髅,有时他们会完全充实; 这一切都取决于手头的具体问题.