假设您有一个支持将 GUI 组件相互嵌套的 GUI 框架。让我们将任何可以包含其他 GUI 组件的 GUI 组件的基类称为 Container。
将 Container soley 子类化以提供默认配置是否可以,或者子类化是否应该始终提供添加/覆盖/实现的行为?例如,假设我想制作一个 ButtonBar 容器,它填充 100% 的屏幕宽度,高度为 50 像素,并水平布置其组件。要像这样配置容器,我可以执行以下两个示例之一:
Container container = new Container();
container.PercentWidth = 100;
container.Height = 50;
container.Layout = Layout.Horizontal;
// use container
或者,(这是我的问题),是否可以这样做:
public class ButtonBar : Container
{
public ButtonBar()
{
PercentWidth = 100;
Height = 50;
Layout = Layout.Horizontal;
}
}
ButtonBar buttonBar = new ButtonBar();
// use buttonBar
ButtonBar 对容器没有额外的功能,并且不会覆盖任何 Container 方法。它只是用来简化将 Container 配置为 ButtonBar。
编辑
我得出的结论是,最好使用返回 Container 的工厂,例如 widgetFactory.CreateButtonBar(); 这样,您最终会使用抽象类型(容器),并将类型的“设置”封装在工厂中,这就是工厂所做的。
public class WidgetFactory
{
public Container CreateButtonBar()
{
Container container = new Container();
container.PercentWidth = 100;
container.Height = 50;
container.Layout = Layout.Horizontal;
return container;
}
}