【发布时间】:2011-03-18 08:44:19
【问题描述】:
我使用装饰器模式来描述动作,我想在 RPC 调用中使用这些动作
public abstract class Action implement Serializable
{
boolean isDecorated = false;
public Action() {} // default constructor for Serialization
}
public abstract class ActionDecorator extends Action
{
private Action _decoratedAction;
public ActionDecorator() // default constructor for Serialization
{}
public ActionDecorator(Action action)
{
_decoratedAction = action;
_decoratedAction.isDecorated = true;
}
}
交易完成后,我收到了一个包含 Action 的 DecoratorAction,但 _decoratedAction 的 isDecorated 成员设置为 false。
由于调用了默认(零参数)构造函数来重新构造我的对象,因此我的装饰器和我的装饰动作都将获得默认值 isDecorated (false)。
我无法复制“_decoratedAction.isDecorated = true;”在 ActionDecorator 的零参数构造函数中,因为 _decoratedAction 当时没有初始化(null)。
当然我可以在每次交易后手动设置布尔值,但每次我的同事想要使用 Action 对象时,最好避免额外的对象初始化(可以忘记)...
【问题讨论】:
标签: java design-patterns serialization gwt decorator