【ソフトウェア設計の基礎】オブジェクト指向コードを書くときの7つの原則

シリーズ記事ディレクトリ

序文

記述されたコードを標準化し、コードの保守性を向上させるために遵守する必要がある 7 つの原則。

1. 単一の責任

  コードでは、すべてのクラス、オブジェクト、およびインターフェースは 1 つの責任 (関数) しか持つことができないため、クラス (オブジェクト、インターフェース) を変更する動機が低下します。特に、テスト後にコードを移動しないことをお勧めします。そうしないと、バグは自己責任になります。

第二に、開閉の原則

  元のコードは拡張のみ可能で、変更はできません。それでも同じ文、特にテストされたコードは動かさないのが一番です。そうしないとバグがうぬぼれます。

3. インターフェース分離

  どのインターフェースも、単一の責任を補足するメソッドを 1 つだけ持つことができます。

4.リヒター代用

  派生クラスは、基本クラスの元の機能を拡張することしかできず、変更することはできません。開閉原理の補足です。

5. デメテルの法則

  たとえば、クラス A とクラス B があります。互いの詳細が少ないほど良い (カップリングは低くなければなりません)

6.依存関係の逆転

  たとえば、Course クラスと Student クラスがあり、ここでは Student が Course クラスを呼び出す可能性をシミュレートします。

class Course{
    
    
       //学习java课程
       public void javaCourse(){
    
    
              //todo
       }
       //学习c sharp课程
       public void csharpCourse(){
    
    
               //todo
       }
}

  Student クラスを呼び出すには、このように記述する必要があります。

class Student{
    
    
       //学习
       public void study(){
    
    
              Course course = new Course ();
              course.javaCourse();
              course.csharpCourse();
       } 
}

  これは新しい Js を追加するための教科書であり、Student クラスと Course クラスを同時に変更するのは非常に面倒であることがわかります。このとき、ICourse インターフェースを参照して、毎回 ICourse インターフェースを介して Student クラスにコース学習を呼び出させることができます。新しいクラスが追加された場合は、元のクラスを変更する必要があります。次のように書かれています。

interface ICourse{
    
    
       void learnCourse();
}

class JavaCourse : ICourse{
    
    
     void learnCourse(){
    
    
           //todo
     }
}

class CSharpCourse : ICourse{
    
    
     void learnCourse(){
    
    
           //todo
     }
}

class Student{
    
    
      //学习
      public void study(){
    
    
             //想写java就new java,代码扩展性和阅读性都提高了,还有就可恨的耦合性
             ICourse javaCourse = new JavaCourse ();
             javaCourse。learnCourse();
      } 
}

7. 合成と多重化

コードを設計するときは、組み合わせ関係が使える場合は、継承関係ではなく組み合わせ関係を使用するようにしてください。

Guess you like

Origin blog.csdn.net/qq_41094072/article/details/126984115