java - 在Java中实现组合的好方法是什么?

标签 java composition

以下类展示了 Java 中的组合的概念:

//Imagine constructors, accessors & mutators has already been created..

class Person{
    private String name;
    private Job job;    //Person has Job
}

class Job{
    private String name;
    private double salary;
}

我的问题是:如果我想从 Person 那里获得工资,以下 2 个选项中哪一个是更好的做法?

1.找到人的工作,然后从人的工作中获得薪水

System.out.println( person.getJob().getSalary() );

2.亲自创建一个 getSalary 方法,这样我就可以这样做:

System.out.println(person.getSalary());

创建一个首先从工作中获取薪水的方法。

class Person{
    private String name;
    private Job job;
    public static double getSalary(){    //Is doing this redundant and bad practice?
        job.getSalary();
    }
}

最佳答案

方法 2 比方法 1 稍好一些,因为从人员获取工资的代码不依赖于任何类型的 Person->Salary 关系实现。您可以自由更改工资的计算方式。在现实生活中,你可以在不了解某人的工作的情况下询问他的薪水是多少。在你的代码中,骗子甚至可以为他返回一个虚构的工资等等。

说实话,我坚持认为方法 1 无论如何都不能被认为是坏的或错误的,它在常见情况下只有很小的缺点......

关于java - 在Java中实现组合的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27461857/

相关文章:

java - Eclipse 无法调试

Java游戏。需要停止代码而不使用break语句或system.exit

haskell - 两个非仿函数可以组成一个仿函数吗?

c# - 为什么在创建部分关系(组合)时使用嵌套类型

java - 如何从其他类java swing调用JButton

java - 如何将python时间转换为java日期

java - PoiReadExcelFile 类会将 'poi-test.xls' 文件读入 HSSFWorkbook 对象

javascript - 使用 ExtendScript 访问内部预合成层

c++ - 用于临时错误信息存储的实用程序类?

haskell - 在 Haskell 中复制 Numpy 的高级索引/切片