Java中的组合示例

时间:2020-02-23 14:36:11  来源:igfitidea点击:

Java中的组合是在类中实现has-a关系的设计技术。
我们可以在Java中使用Java继承或者Object组合进行代码重用。

用Java编写

Java组合是通过使用引用其他对象的实例变量来实现的。
例如,一个"人"有一个"工作"。
让我们看一下Java合成示例代码。

Java撰写范例

package com.theitroad.localposition;

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;
  }
  
  
}
package com.theitroad.localposition;

public class Person {

  //composition has-a relationship
  private Job job;
 
  public Person(){
      this.job=new Job();
      job.setSalary(1000L);
  }
  public long getSalary() {
      return job.getSalary();
  }

}

这是一个Java合成示例的测试类,该类使用person对象并获取薪水。

package com.theitroad.localposition;

public class TestPerson {

  public static void main(String[] args) {
      Person person = new Person();
      long salary = person.getSalary();
  }

}

Java组合的好处

请注意,上述用于Java编写的测试程序不受Job对象中任何更改的影响。
如果您正在寻找代码重用且两个类之间的关系为has-a,则应使用组合而不是继承。

在Java中使用组合的好处是,我们可以控制其他对象对客户端类的可见性,并且仅重用我们需要的对象。

另外,如果其他类的实现发生了任何变化,例如getSalary返回String,则我们需要更改Person类以适应它,但是客户端类不需要更改。

组合允许在需要时创建后端类,例如,我们可以更改Person``getSalary方法以在需要时在运行时初始化Job对象。

进一步阅读:您是否知道Java编程中的最佳实践之一是使用组合而不是继承,请查看这篇文章,以详细分析组合与继承。