创建抽象类的许多实例之一

时间:2014-03-27 14:07:57

标签: oop design-patterns factory

几天后,我正在开展一个OOP项目,我正在努力采用最佳实践和设计模式。我有这个问题,我想以优雅的方式解决它。

我有一个抽象对象名称Node,以及扩展此Node的大量其他类:NodeA,NodeB,...和NodeZ。 每个节点都有自己的创建参数;例如,NodeA采用4个字符串参数,NodeB 2 int,NodeC采用List<双>和一个对象狗等等。

我教过使用工厂< Node>,但是构造函数中一个Node和另一个Node之间的这种巨大差异给了我一些问题。

您认为这里的策略是什么? (如果可能,我想避免反思)

提前感谢您的帮助!

修改以更好地指定我的问题:   我有一棵树<节点>和一个向树添加节点的应用程序。   这些节点的创建是我的问题。

Class Application {
  MyTree<Node> tree = new MyTree<Node>();
  void FirstWay()
    {
     NodeA node1 = new NodeA("1","2","3","4");   
     NodeB node2 = new NodeB(10,20); 
     root = tree.takeRoot();
     node1.setChild(node2);
     root.setChild(node1);
    }

  void SecondWay()
    {
        NodeA node1= MyFactory.getNode("NodeA","1","2","3","4");
        NodeB node2= MyFactory.getNode("NodeB",10,20);
        root = tree.takeRoot();
        node1.setChild(node2);
        root.setChild(node1);
    }

}

实际上我正在努力了解谁应该负责创建一个对象。你能给我一些指导吗? 感谢!!!

已修改

我正在构建一个3D引擎,我有一组将进入SceneTree的节点。每个节点都具有特定于节点的特殊属性。 Node_Camera将具有设置摄像机的对象和参数。 Node_Material将包含材质属性,Node_Geometry将包含几何体。

我想我会选择工厂模型。这样,将来我将实现场景的xml解析,我将在阅读xml时使用现成的功能。

1 个答案:

答案 0 :(得分:1)

两种方法都有效。正如您在评论中所说,如果存在与创建节点相关的其他活动(例如,通知),则工厂非常有用。我建议不要在项目开始时过度思考。花一点时间选择看起来很好的方法,并准备好在遇到问题时改变。 “听取代码”,它会告诉你何时改变。