所以我想说我有一些代码......
House = function () { /* constructor */ }
House.childPlay (childId) { ... }
House.childLearn (childId) { ... }
House.childEat (childId) { ... }
所以,隐含地,这个House对象“有”子,但它不一定有Child对象。这就是我想知道的。那种不断传递的孩子似乎很可疑。 House应该拥有一个Child对象的集合吗?
House.Child.play () { ... }
House.Child.learn () { ... }
House.Child.eat () { ... }
我唯一担心的是,一些操作位于众议院和儿童之间,就像他们互动一样。因此,Child对象需要某种对父对象的认识。
House.Child.clean () {
self._cleaningStrategy( self.house._provideMop() );
}
我看到有一个名为参数对象的设计模式。是这个吗?我想如果我传递一个元组值的参数,但是在这里我只传递一个。
答案 0 :(得分:1)
听起来孩子的行为独立于房子(应该是这样)。如果我们想要孩子吃饭,这与房子无关,那么这就是要走的路:
Child.Eat();
如果我们希望孩子打扫房子,听起来我们应该这样做:
Child.CleanHouse(house);
这样,孩子也可以清理另一所房子;不只是一个房子。
CleanHouse()可能如下所示:
Mop mop = house.GetMop();
// Perform cleaning activities here.
我同意你对在家庭对象上有孩子行为的担忧。这违反了OOP单一责任原则(房屋应该只做房子),以及信息专家(具有履行职责所需信息的类)的设计理念。 House应该包含特定于房子的行为,而Child应该包含特定于孩子的行为,否则它们会紧密耦合。
我不知道这是一个设计模式问题,因为它是一个OOP问题。