我有这个基类有以下接口:
abstract class Base
{
abstract public object Val
{
get;
}
}
对于任何派生类, 必须在创建对象时指定Val
的值。
问题是:如何使派生类执行此操作(希望在编译时)?
我尝试添加一个构造函数:
abstract class Base
{
public Base(object value)
{
val = value;
}
private object val;
...
}
但正如你所看到的那样,我必须声明一个私有字段来存储它的值(因为Value是只读的)。
问题出现是因为我想使用GoF设计模式中引入的Decorator / Wrapper模式为派生类添加某种效果。 但是因为我在Base类中声明了该字段,所以装饰器会保存相同数据的副本,最终浪费内存。