【发布时间】:2011-02-05 07:20:32
【问题描述】:
所以假设我有一个名为 ABC 的类,它有一个 Point 对象列表。
我需要用它们做一些绘图逻辑。这些 Point 对象中的每一个都有一个 Draw() 方法,该方法将由 ABC 类调用。
Draw() 方法代码需要来自 ABC 类的信息。
我只能看到两种让他们拥有此信息的方法:
- 让 Abc 类公开一些允许 draw() 做出决定的属性。
- 让 Abc 类传递给 draw() 一个充满属性的类。
两种情况下的属性是相同的,我的问题是在这种情况下首选什么。也许第二种方法更灵活?也许不吧?我在这里没有看到明显的赢家,但这肯定与我缺乏经验有关。
如果还有其他好的方法,请随时分享。
以下是两种情况:
class Abc1 {
public property a;
public property b;
public property c;
...
public property z;
public void method1();
...
public void methodn();
}
这是方法2:
class Abc2 {
//here we make take down all properties
public void method1();
...
public void methodn();
}
class Abc2MethodArgs {
//and we put them here. this class will be passed as argument to
//Point's draw() method!
public property a;
public property b;
public property c;
...
public property z;
}
此外,如果这两种方法有任何“正式”名称,我想知道它们,以便我可以更好地选择标签/线程名称,因此它对于搜索目的更有用。或者随意编辑它们。
【问题讨论】:
-
我可能只是因为这个例子而误解了你的观点,但感觉就像 ABC 应该绘制点,而不是基于 ABC 绘制自己的点。
-
是的,我明白你的意思。我没有很好地解释自己,但是可以安全地假设 draw() 函数确实比在 ABC 中更好地位于 Point 中(实际上,我将有不同类型的点从 Point 类继承,每个点都有一个不同的绘图逻辑!)。
标签: c# java design-patterns oop properties