Java組合

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對象。


上一篇: java中方法重載和方法重寫的區別 下一篇:無