단일 책임 원칙(SRP라고도 함).
정의:
수업을 변경하는 데는 한 가지 이상의 이유가 있어서는 안 됩니다.
수업을 변경하는 데는 한 가지 이유만 있어야 합니다.
때때로 개발자는 인터페이스를 디자인할 때 인터페이스에서 선언되는 사용자 속성 및 사용자 동작과 같은 몇 가지 문제에 직면합니다. 이로 인해 비즈니스 객체와 비즈니스 로직이 결합되어 인터페이스에 두 가지 책임이 발생하게 됩니다. 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); }
위의 예에는 키와 몸무게가 비즈니스 개체이며 해당 메서드가 주로 사용자 속성을 담당합니다. 인터넷을 먹고 서핑하는 것은 해당 비즈니스 로직이며 주로 사용자 행동을 담당합니다. 하지만 이로 인해 사람들은 이 인터페이스가 무엇을 하는지 알 수 없다는 느낌을 받게 되고, 책임이 명확하지 않아 향후 유지 관리 시 다양한 문제가 발생할 수도 있습니다.
해결책: 단일 책임 원칙, 이 인터페이스를 서로 다른 책임이 있는 두 개의 인터페이스로 분해하세요.
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를 담당 Tu의 행동
package com.loulijun.chapter1; /** * BL:Business Logic,业务逻辑 * 负责用户的行为 * @author Administrator * */ public interface ItutuBL { //吃饭 boolean chiFan(boolean hungry); //上网 boolean shangWang(boolean silly); }
은 따라서 인터페이스의 단일 책임을 달성합니다. 그러면 인터페이스를 구현할 때 두 개의 서로 다른 클래스가 필요합니다
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!