java中的组合是在类中实现has-a关系的设计技术。可以在java中使用java继承或对象组合来重用代码。在Java编程中表现出来的就是:一个类使用另一个类作为它的成员。
通过使用引用其他对象的实例变量来实现Java组合。例如,一个人(Person
)有一份工作(Job
)。看一下java组合示例代码。
Java组合示例
文件:Job.java
// 工作类 public class Job { private String role; private long salary; private int id; public String getRole() { return role; } public void setRole(String role) { this.role = role; } public long getSalary() { return salary; } public void setSalary(long salary) { this.salary = salary; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
文件:Person.java
public class Person { // 组成 has-a 关系 private Job job; public Person(){ this.job=new Job(); job.setSalary(1000L); } public long getSalary() { return job.getSalary(); } }
下面是一个java组合示例的测试类,它使用Person
对象并获得工资。
public class TestPerson { public static void main(String[] args) { Person person = new Person(); long salary = person.getSalary(); } }
Java组合的好处
上述测试程序不受Job
对象中任何更改的影响。如果要代码重用,并且两个类之间的关系是has-a,那么应该使用组合而不是继承。
在java中使用组合的好处是可以控制其他对象对客户端类的可见性,并仅重用需要的东西。
另外,如果其他类实现中有任何更改,例如:getSalary()
方法返回String
,需要更改Person
类以适应它,但客户端类不需要更改。
组合允许在需要时创建后端类,例如,可以在需要时更改Person
类的getSalary()
方法以在运行时初始化Job
对象。