大話設計模式筆記 合成/聚合復用原則


合成/聚合復用原則,盡量使用合成/聚合,盡量不要使用類繼承。

 聚合(Aggregation)表示一種弱的‘擁有’關系,體現的是A對象可以包含B對象但B對象不是A對象的一部分。

合成(Composition)則是一種強的'擁有'關系,體現了嚴格的部分和整體關系,部分和整體的生命周期一樣。

 

優先使用對象的合成/聚合將有助於你保持每個類被封裝,並被集中在單個任務上,這樣類和類繼承層次會保持較小規模,而且不太可能增長為不可控制的龐然大物。

繼承是一種強耦合的結構。子類隨父類改變而改變,一定要在是‘is-a’的關系在考慮使用。

 

橋接模式(Bridge),將抽象部分與它實現部分分離,使它們都可以獨立地變化。

 

package bridge;

public abstract class Imp {
    public abstract void operation();
}

 

package bridge;

public class ConcreteImpA extends Imp {

    @Override
    public void operation() {
        System.out.println("ConcreteImpA operation");
    }

}

 

package bridge;

public class ConcreteImpB extends Imp {

    @Override
    public void operation() {
        System.out.println("ConcreteImpB operation");
    }

}

 

package bridge;

public abstract class Imp {
    public abstract void operation();
}

 

package bridge;

public class RefinedAbstraction extends Abstraction {

    public static void main(String[] args) {
        Abstraction abstraction=new RefinedAbstraction();
        
        abstraction.setImp(new ConcreteImpA());
        abstraction.operation();
        
        abstraction.setImp(new ConcreteImpB());
        abstraction.operation();
    }
}

 

實現系統可能有多角度分類,每一種分類都有可能變化,那么就把這種多角度分離出來讓它們獨立變化,減少它們之間的耦合。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM