我需要添加一个方法来计算工人工资和他的高薪的加权总和.我想要这样的东西:
class CompanyFinanse { public decimal WeightedSumOfWorkerSalaryAndSuperior(Worker WorkerA, Worker Superior) { return WorkerA.Salary + Superior.Salary * 2; } }
这是一个很好的设计还是我应该把这个方法放在其他地方?我只是盯着设计项目并思考一种良好的,面向对象的方法来组织类中的方法.所以我想从头开始考虑OOP.需要最佳实践!
我要么把它放在工人类中,要么在财务库中有静态功能.我不认为财务对象真的有意义,我认为它将更多地是一组业务规则而不是任何东西,所以它将是静态的.
public class Worker { public Worker Superior {get;set;} public readonly decimal WeightedSalary { get { return (Superior.Salary * 2) + (this.Salary) } } public decimal Salary {get;set;} }
要么
public static class Finance { public static decimal WeightedSumOfWorkerSalaryAndSuperior(Worker WorkerA, Worker Superior) { return WorkerA.Salary + Superior.Salary * 2; } }
为了使您的设计成为面向对象,您应该首先考虑整个应用程序的目的.如果您的应用程序中只有一种方法(加权和),则没有太多的设计可以继续.
如果这是一个财务应用程序,也许您可以拥有一个Salary类,其中包含worker的工资和一些实用程序功能.
对于您指出的方法,如果Worker类具有对Superior的引用,则可以将此方法作为Worker类的一部分.
如果没有关于应用目的的更多信息,很难给出良好的指导.