<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 合成/聚合復用原則 盡量使用合成/聚合,盡量不要使用類繼承。(摘抄) 其實合成/聚合復用原則,平時都會使用,但是自己總結可能有點總結不出來。這個原則用我的理解就是抽象與抽象之間劃分必須明確,盡量不要讓一個抽象去繼承與另一個抽象,要讓一個抽象去調用另一個抽象。 繼承的使用必須要十分謹慎,因為使用繼承之后,父類發生改變,必然會影響到子類。繼承使用時必須要確定當前類和父類是有非常緊密的關系,不然會對當前類的復用產生很大的影響。要從當前類的職責來考慮問題。 聚合表示一種弱的“擁有”關系,體現的是A對象可以包含B對象,但B對象不是A對象的一部分;合成則是一種強的“擁有”關系,體現了嚴格的部分和整體的關系,部分和整體的生命周一樣。(摘抄) 合成/聚合復用原則的好處是,優先使用對象的合成/聚合將有助于你保持每個類被封裝,并集中在單個任務上。這樣類和類繼承層次會保持較小規模,并且不太可能增長為不可控制的龐然大物。(摘抄) ### 橋接模式 將抽象部分與它的實現部分分離,使它們都可以獨立地變化。(摘抄) 這句話地意思應該是把它的每個功能和功能之間都分開。然后這些功能和整個物體的抽象也分開。 這個功能的說法并不是一定代表一個具體的功能,它是這個系統的某一個實現,暫且把實現就當成實現一個功能 ~~~ //功能接口 public interface Implementor { void Operation(); } //功能的實現A&B public class ConcreteImplA implements Implementor { @Override public void Operation() { // TODO Auto-generated method stub System.out.println("A"); } } public class ConcreteImplB implements Implementor { @Override public void Operation() { // TODO Auto-generated method stub System.out.println("B"); } } //整個物體的抽象 public class Abstract { public Implementor implementor; public void setImplementor(Implementor implementor) { this.implementor = implementor; } public void Operation() { implementor.Operation(); } } //某個子物體 public class RefinedAbstract extends Abstract { @Override public void Operation() { //可以添加特有的一些操作 implementor.Operation(); } } class Client { public static void main() { Abstract ab = new RefinedAbstract(); ab.setImplementor(new ConcreteImplA()); ab.Operation(); ab.setImplementor(new ConcreteImplB()); ab.Operation(); } } ~~~ 實現系統啃呢個有多種角度分類,每一種分類都有可能變化,那么就把這種多角度分離出來讓它們獨立變化,減少它們之間的耦合。(摘抄)—— 感覺這句話總結得很精辟。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看