这可能仅仅是一个偏好问题,但是,我有兴趣知道何时使用这两种方法的最佳实践方式.
例如
var person = new Person();
person.Run();
Run Code Online (Sandbox Code Playgroud)
而不是
var person = new Person();
Excercise.Run(person);
Run Code Online (Sandbox Code Playgroud)
上面的例子可能不是最好的,但我的一般观点是你何时决定赋予对象责任而不是另一个类?
Bri*_*new 13
不要为你的对象做事.他们在那里为你做事.
这听起来很简单,但它是一个有用的格言.这意味着(正如您所确定的)调用对象上的方法,它将使用可用的所有知识来生成结果.它强化了封装和分离/遏制责任
这没有发生的指标是这样的代码:
priceBond(bond.getPrincipal(), bond.getMaturity(), bond.getCoupons(), interestRate)
Run Code Online (Sandbox Code Playgroud)
债券对象正在向某些第三方提供所有信息.像上面这样的代码最终会在任何地方重复出现.而是写
bond.priceBond(interestRate)
Run Code Online (Sandbox Code Playgroud)
并将所有信息保存在一个对象中.
如果你的对象受到大量吸气剂的影响,那么这可能表明你的物体没有做到他们应该做的事情.
一般来说,这个OOPish构造:
person.Run(distance);
Run Code Online (Sandbox Code Playgroud)
只是一个语法糖:
Person.Run(person, distance);
Run Code Online (Sandbox Code Playgroud)
哪里person成为一个隐含的this参考.虚拟功能等有一些细微之处,但你明白了.
至于你的问题,你基本上有一个丰富的领域模型而不是贫穷的领域,这是许多辩论的主题.
通常,在这种情况下Person,一个类具有行为;
在这种情况下,行为是Run因此人应该有方法Run
var p = new Person();
p.Run();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
889 次 |
| 最近记录: |