思考の宴の設計モード-アダプタモードAdapter Pattern


  • 適用シーン例
  • java
  • を実現

    適用シーンの例
    プロジェクトには複数のチームやメンバーが協力して開発する必要があります.いずれかの機能モジュールClassAはプログラマA(または会社A)作成の場合、プロジェクトが一定の段階に進むにつれて需要が明確になるため、このモジュールは対外通信のインタフェースIを提供する必要があるが、当時の特定のシーンでは、このモジュールは改造や書き換えが容易ではなく、必要なインタフェース機能に近いクラスを提供するだけで、アダプタモードが機能するようになる.
    アダプタ、Adapterは、その名の通り、あるものを変化させ、私が望んでいるように適合させます.Aプログラマーがクラスまたはインタフェースを作成したが、このインタフェースが私のニーズに完全に合っていない場合、私は積極的にそれを私の望むインタフェースIにすることができます.では問題が来て、いったいどのようにそれを変えますか?ははは、私の話では、「直接使う」か、「子承父業」か!
    通常、アダプタモードは2つの形式に分けられます.
  • オブジェクト適合(「直接使用」)
  • 類適合(「子承父業」)
  • 簡単に言えば、オブジェクトの適合は、適合するクラスのオブジェクトを直接含んで干渉することによってその行為を改造する.クラス・アダプティブは、アダプティブにするクラスを直接継承することによって、ターゲットのニーズを達成するために動作を拡張します.
    実装(java)
    具体的な例を見てみましょう.今1つの小さいソフトウェアを书いて、私の会社は1つの“労働者”のインタフェースIWorkerを定义しなければならなくて、“话します”、“仕事”、“给料を获得します”などの3つの方法を実现して、しかし私の会社と协力してこのソフトウェアを开発するA会社はその自身の业务などの特殊な原因のため、ただ1つのPerson类を提供して、この类は“话します”だけあって、“寝ます”の2つの方法、会社の「上層部」の圧力に鑑みて、私達の研究開発チームは外部コードを修正することができなくて、A会社の何を非難することができなくて、だからチームは内部の討論を経て、一致して自分でこのインタフェースの不一致の問題を解決することを決定します.
    必要な労働者インタフェース:
    public interface IWorker {
        void speak();
        void work();
        void getSalary();
    }
    

    A社が提供するクラス:
    public class Person {
    
        public void speak(){
            System.out.println("I am a normal person.");
        }
    
        public void sleep(){
            System.out.println("Leave me alone.");
        }
    }

    使用対象適合モードの改造:
    public class WorkerObjectAdapter implements IWorker{
    
        Person person;    //                
    
        public WorkerObjectAdapter(Person person) {
            this.person = person;
        }
    
        @Override
        public void work() {    //    “work”  
            System.out.println("work");
        }
    
        @Override
        public void getSalary() {    //    “getSalary”  
            System.out.println("get salary");
        }
    
        @Override
        public void speak() {    // 1.   “speak”  
            person.speak();    //2.          
            System.out.println("WorkerObjectAdapter speak");
        }
    
    }

    クラス適合モードを使用して改造する:
    public class WorkerClassAdapter extends Person implements IWorker{//      
    
        @Override
        public void work() {    //    “work”  
            System.out.println("work");
        }
    
        @Override
        public void getSalary() {    //    “getSalary”  
            System.out.println("get salary");
        }
    
        @Override
        public void speak() {    // 3.   “speak”  
            super.speak();    //4.       ,      
            System.out.println("WorkerClassAdapter speak");
        }
    
    }

    以上の方法で、私たちの研究開発チームはプロジェクト開発の主導権を再び自分の手に握っています.外部人員(A社)のマイナス影響を最小化(以上2,4箇所のみリスク)異常処理などで直接リスクを遮断することも可能ですが、具体的なアダプタでは、必要なインタフェースを実現するコードはすべて私たちが自分で書いたものですから~みんなが喜んでくれて、世界が調和しています~
    アダプタモード:私の地盤は私が決めます!
    転載は以下のことを明記してください.