単一責任原則 (単一責任原則)、SRP と呼ばれます。
定義:
クラスが変更される理由は 1 つだけであってはなりません。
クラスが変更される理由は 1 つだけである必要があります。
開発者は、インターフェイスの設計時に、ユーザー属性やユーザーの動作がインターフェイスで宣言されているなど、問題が発生することがあります。これにより、ビジネス オブジェクトとビジネス ロジックが統合され、インターフェイスに 2 つの責任が発生します。インターフェイスの責任は明確ではありません。SRP の定義によれば、インターフェイスの単一責任の原則に違反します。
次は例です:
package com.loulijun.chapter1; public interface Itutu { //身高 void setShengao(double height); double getShengao(); //体重 void setTizhong(double weight); double getTizhong(); //吃饭 boolean chiFan(boolean hungry); //上网 boolean shangWang(boolean silly); }
上の例にはこの問題があります。身長と体重はビジネス オブジェクトであり、対応するメソッドが主にユーザーの属性を担当します。食事やインターネット サーフィンは対応するビジネス ロジックであり、主にユーザーの行動を担当します。しかしこれでは、このインターフェースが何をするのかわからない、責任が明確でないという印象を与え、その後のメンテナンス時にさまざまな問題が発生する可能性があります。
解決策: 単一責任の原則。このインターフェイスを異なる責任を持つ 2 つのインターフェイスに分解するだけです。
ItutuBO.java: tutu (個人名の場合は Tutu) の属性を担当します
package com.loulijun.chapter1; /** * BO:Bussiness Object,业务对象 * 负责用户的属性 * @author Administrator * */ public interface ItutuBO { //身高 void setShengao(double height); double getShengao(); //体重 void setTizhong(double weight); double getTizhong(); }
ItutuBL.java: Tutu の動作を担当します
package com.loulijun.chapter1; /** * BL:Business Logic,业务逻辑 * 负责用户的行为 * @author Administrator * */ public interface ItutuBL { //吃饭 boolean chiFan(boolean hungry); //上网 boolean shangWang(boolean silly); }
これにより、インターフェイスの単一の責任が実現されます。次に、インターフェイスを実装するときに、2 つの異なるクラスが必要です
TutuBO.java
package com.loulijun.chapter1; public class TutuBO implements ItutuBO { private double height; private double weight; @Override public double getShengao() { return height; } @Override public double getTizhong() { return weight; } @Override public void setShengao(double height) { this.height = height; } @Override public void setTizhong(double weight) { this.weight = weight; } }
TutuBL.java
package com.loulijun.chapter1; public class TutuBL implements ItutuBL { @Override public boolean chiFan(boolean hungry) { if(hungry) { System.out.println("去吃火锅..."); return true; } return false; } @Override public boolean shangWang(boolean silly) { if(silly) { System.out.println("好无聊啊,上会网..."); return true; } return false; } }
これにより、ユーザー属性がいつ必要になるかが明確になります。現時点では、ItutuBO インターフェイスを変更するだけで済みます。変更は TutuBO クラスにのみ影響し、他のクラスには影響しません。
では、単一責任原則の重要性は何でしょうか?
以上がJava デザイン パターンの単一責任原則を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。