Java設計モード-アダプタ設計モード

12053 ワード

  • javaプログラムでは、1つのクラスが1つのインタフェースを実現するには、インタフェース内のすべての抽象メソッドを上書きする必要があります.この場合、インタフェースで定義されたメソッドが多すぎますが、サブクラスがこんなに多くの抽象メソッドを使用できない場合は、使用が面倒になります.そのため、中間の過剰が必要ですが、遷移クラスは直接使用されたくありません.したがって、この遷移クラスを抽象クラスとして定義するのが最も適切です.すなわち、インタフェースがまず抽象クラスによって実装され(この抽象クラスはアダプタクラス)、この抽象クラスでいくつかの方法(方法が空)が実装されると、以降のサブクラスが直接この抽象クラスを継承し、必要な方法を上書きすることができます.次のコードを参照してください.
  • 私は初心者で、コードは书くのが妥当でない地方があって、また达人に指导してもらって、このコードはレンガを投げて玉を引くことに相当します
    //    
    public interface Computer {
       public abstract void open();
        void close();
        //    
       public abstract void activated();
        //     
       public abstract void iconified();
        //      
        public abstract void deiconified();
    
    }
    

    次に抽象クラス実装インタフェースを作成します
    public class ComputerAdapter implements Computer {
        @Override
        public void open() {
    
        }
    
        @Override
        public void close() {
    
        }
    
        @Override
        public void activated() {
    
        }
    
        @Override
        public void iconified() {
    
        }
    
        @Override
        public void deiconified() {
    
        }
    }
    

    クラス継承抽象クラスを作成します.ここには2つの継承抽象クラスのクラスがあります.
    //    ComputerImpl 
    public class ComputerImpl extends ComputerAdapter {
        @Override
        public void open() {
            System.out.println("    ");
        }
    
        @Override
        public void close() {
            System.out.println("    ");
        }
    }
    

    2番目のクラス
    //     ComputerImpl11 
    public class ComputerImpl11 extends ComputerAdapter {
        @Override
        public void activated() {
            System.out.println("    ");
        }
    
        @Override
        public void iconified() {
            System.out.println("     ");
        }
    
        @Override
        public void deiconified() {
            System.out.println("      ");
        }
    }
    

    ファクトリクラスを作成する
    public class ComputerFactory {
        public static Computer print(int ii){
           Computer c = null;
    
            if (ii == 0) {
                c = new ComputerImpl();
            } else if (ii == 1) {
                c = new ComputerImpl11();
            }
            return c;
        }
    }
    

    テストクラスの作成
    public class Test {
        public static void main(String[] args) {
            Computer c = ComputerFactory.print(0);
            c.open();
            c.close();
        }
    }
    

    この場合の印刷結果は
        
        
    

    霄銘オリジナル、権利侵害必究ブログ主QQ:25344929974