什么反/模式涉及反复传递相同的参数?

时间:2012-03-22 22:32:50

标签: oop design-patterns language-agnostic parameters refactoring

所以我想说我有一些代码......

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() );
}

我看到有一个名为参数对象的设计模式。是这个吗?我想如果我传递一个元组值的参数,但是在这里我只传递一个。

1 个答案:

答案 0 :(得分:1)

听起来孩子的行为独立于房子(应该是这样)。如果我们想要孩子吃饭,这与房子无关,那么这就是要走的路:

Child.Eat();

如果我们希望孩子打扫房子,听起来我们应该这样做:

Child.CleanHouse(house);
这样,孩子也可以清理另一所房子;不只是一个房子。

CleanHouse()可能如下所示:

Mop mop = house.GetMop();
// Perform cleaning activities here.

我同意你对在家庭对象上有孩子行为的担忧。这违反了OOP单一责任原则(房屋应该只做房子),以及信息专家(具有履行职责所需信息的类)的设计理念。 House应该包含特定于房子的行为,而Child应该包含特定于孩子的行为,否则它们会紧密耦合。

我不知道这是一个设计模式问题,因为它是一个OOP问题。