【发布时间】:2014-03-20 21:08:04
【问题描述】:
我正在构建一些与 HTTP Web 服务交互的代码。要与之交互,您可以使用 HTTP GET 请求或 HTTP POST 在其上调用“命令”。
我想创建一个封装和隐藏 HttpWebRequest 对象的基类(例如,ServiceCommand),但我不相信我希望它公开提供任何功能,只提供给子类。
子类可以是(例如)SearchCommand 或 FetchCommand,它们将使用基类中受保护方法提供的功能。
基本上,我的问题是:创建只有受保护成员而没有公共成员的类是否被认为是糟糕的设计。
【问题讨论】:
-
我会说使用它们并坚持 OOP 比不使用它们更好。
-
如果您没有任何公共成员,您将如何调用实现的功能?构造函数?
-
我不知道有什么理由不这样做,但是看到一个没有公共成员的班级似乎很奇怪。我在 .NET 框架中找不到任何这样的例子,这让我怀疑这是否是个好主意。
-
没有可调用的公共功能。然而,该功能是所有子类的通用功能,这就是为什么它会有几个受保护的成员。
-
这听起来不像
is-a关系,而是has a或uses。您是否考虑过将包装器移至单独的类并从XCommand调用它,这看起来更像您的情况?如果您愿意,您仍然可以为所有命令类提供通用接口。
标签: c# class abstract-class class-design