2017-05-23 2 views
-1

내가 수업과 같이이 말 : 구성 설정을 관리 :이 클래스는 하나의 책임이이 단일 책임 원칙을 위반 하는가

class Config 
{ 
    private $configA; 
    private $configB; 
    private $configC; 
    private $configD; 

    public function getConfigA(): string 
    { 
     return $this->confiA; 
    } 
    //... 
} 

의미 하나.

그러나 변경 이유를 다양한 많이 가지고 또 다른 의미에서하십시오 설정 이름이 변경되어, 새로운 설정이 설정 제거는, 유형 변경하는 설정 등 등에 필요한 검증을 반환 추가 된

를위한 클래스가 있어야한다 각각의 구성 설정은 단일 책임을 만족 시키거나 너무 심한가?

+0

마티 당신은 남자를 뭐하고 있습니다! 이 항목에는 몇 가지 아이디어가 있지만 https://en.wikipedia.org/wiki/Design_Patterns에 대한 좋은 자료입니다. 세 번째/네 번째 패턴은 유형별로 분류됩니다. 구조 패턴을 찾고있을 수 있습니다. – jiveturkey

+0

이런 종류의 일이 얼마나 세분화되어야하는지 이해하려고 노력하고 수업이 그 원칙을 위반했는지 여부 –

+0

문자열을 반환하는 경우 배열이나 다른 형식으로 문자열을 반환하는 것이 좋지만 반환 유형은 약간에 관한 것입니다. – jiveturkey

답변

1

위법 사항이 아닙니다. 간단한 테스트는 문장의 의미를 설명하는 문장에서 "and"라는 단어를 사용해야하는지 여부입니다.

0

이와 같은 질문은 주관적이므로 문맥을 조사해야합니다. 그 중 하나 인 매우 중요한 컨텍스트는 인 수준입니다. 예를 들어, 아키텍처 수준에서 단일 책임은 고수준 구성 요소에 적용됩니다. 예를 들어, 웹 응용 프로그램의 경우 비즈니스 로직데이터 액세스은 별도의 모듈로 처리해야한다고 생각할 수 있습니다. 각각의 클래스에는 클래스, 인터페이스 등과 같은 더 작은 모듈이 많이 있지만, 추상화 수준 (아키텍처 수준)에서는 각 모듈을 모듈에 할당 된 별도의 단일 책임으로 간주 할 수 있습니다.

그러나 비즈니스 논리와 같은 모듈에서는 추상화 수준이 다릅니다. 클래스 수준의 엔티티를 처리합니다. 이제 각 클래스는 단일 책임을 기반으로해야하지만 자체 수준에 따라야합니다.

일반적으로 클래스 디자인을 달성하는 한 가지 방법은이 클래스가 무엇인지, 짧은 한 단어 또는 문구 설명을 묻는 것입니다. 그런 간단한 설명을 찾을 수 없다면, 아마 분해해야 할 것입니다.

관련 문제