(this.status == Status.Done){ parent.remove(本); } } public void draw(){/ * draw * /}}
class Map:Parent { MyObject myobj; 公共空载( MapInfo的 </跨度> 地图){ //这个 …
我觉得你 的 混合行为与对象创建 强> 。 Factory Method和Builder都是创建设计模式。所以你可以用任何一个来创建对象。请记住,这些模式只会解决您的对象创建问题。
其他行为方面(如您所提到的,您希望实现特定行为)不是这些设计模式的一部分。因此,您可以灵活地按照自己的方式进行操作,但请记住这些设计原则,如OCP,SRP,DIP等。
这个SO问题讨论了这些模式: 工厂方法(1)vs工厂(2)vs Builder(3)模式
一个简单的(如果不是优雅的)修复方法是将'this'传递给您的工厂,并且只在需要时让工厂调用setParent(),因为工厂知道实现细节。
myobj = MyObjectFactory.create(map.objectInfo, this); case Type.C: var inst = new ObjectC(); inst.setParent(parent);