단일 책임 원칙은 무엇입니까?
컴퓨터 프로그래밍 및 디자인에서 단일 책임 원칙은 프로그램의 모든 클래스가 더 큰 응용 프로그램에서 하나의 기능 만 수행해야한다는 견해를 뒷받침하는 개념입니다. 이 아이디어는 전체 클래스가 단일 책임 수행에 초점을 맞추고 외부 클래스에 거의 의존하지 않기 때문에 캡슐화와 같은 객체 지향 프로그래밍의 이상을 일부 촉진합니다. 동시에, 단일 객체의 기능이 객체가 처리하는 데이터와 분리되어 있기 때문에 초기 객체 지향 프로그래밍의 일부 개념에 다소 반대가됩니다. 일부 중앙 데이터. 단일 책임 원칙은 책임 중심 설계로 알려진 유형의 설계 모델의 기초입니다.
단일 책임 원칙의 예는 전통적인 전화 송수화기 형태를 취할 수 있습니다. 일부 설계 원칙은 송수화기를 전화선의 입력과 스피커의 출력 전송을 모두 처리하는 단일 객체로 간주합니다. 단일 책임이 단일 책임만을 가져야하는 단일 책임 모델 하에서, 송수화기는 전화선으로부터 입력을 받거나 데이터를 출력하는 것과 같이 각각 단일 기능을 수행하는 여러 개의 개별 오브젝트로 구성됩니다. 이어 피스.
단일 책임 원칙을 사용함으로써 얻을 수있는 장점 중 하나는 매우 높은 수준의 추상화 및 모듈화입니다. 핸드셋의 예에서, 전화선으로부터의 입력 또는 신호가 사용자에게 출력되는 방식은 동일한 인터페이스에 대한 계약을 준수하는 한 이웃 클래스에 영향을 미치지 않으면 서 변경 될 수있다. 또한 각 클래스가 완전히 캡슐화되어 있으며 주변 객체에 대한 책임이 거의 없기 때문에 특정 구성 요소의 재사용 가능성이 매우 높을 수 있습니다.
단일 책임 원칙으로 인해 발생할 수있는 복잡한 문제는 모두 동일한 데이터에서 작동하는 많은 클래스와 객체입니다. 이는 많은 양의 오버 헤드와 복잡한 설계 프로세스를 의미 할 수 있습니다. 또한 프로그램의 한 부분이 수천 개의 작은 클래스 파일로 구성 될 수 있기 때문에 큰 프로그램 디버깅이 어려워 질 수 있습니다.
책임 중심 설계를 통해 단일 책임 원칙을 적용하면 데이터를 조작하는 데 사용되는 데이터와 방법이 설계 목적으로 분리됩니다. 이것은 디자인에서 특정 자유, 캡슐화 및 모듈화로 이어지지 만 한 번에 데이터와 상호 작용을 시도하는 많은 클래스를 용이하게하기 위해 사용해야하는 많은 중간 패턴과 디자인을 생성 할 수도 있습니다. 반면에 객체의 데이터와이를 조작하는 데 사용 된 방법이 단일 다중 책임 객체에 함께 묶인 경우 시스템이 확장되거나 변경되거나 복잡 해짐에 따라 코드를 수정하기가 더 어려워 질 수 있습니다.