원본 본문으로 이동하기

객체지향 프로그래밍 SOLID 원칙

박용서 - 다음 문서를 참고 하였습니다. https://ko.wikipedia.org/wiki/SOLID 사실 객체지향 프로그래밍에 있어 기본적인 것들인데... 이렇게 5가지 원칙으로 깔끔하게 정리되어 있으니 집고 넘어가 보도록 하겠습니다. S : 단일 책임 원칙 (Single responsibility principle) - 모든 클래스는 하나의 책임만 가져야한다. - 객체가 변경되는 요인도 하나 뿐이여야한다. 사유 - 클래스가 커질 경우 가독성이 떨어진다. - 의존성이 증가한다. - 클래스에 사이드 이펙트 관계를 잘 못 알고 고칠 경우 다른 기능까지 피해를 볼 수 있다. 기타 - 하나의 클래스가 여러가지의 일을 해야할 경우. > 컴포지트 패턴을 고려해본다. https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%8F%AC%EC%A7%80%ED%8A%B8_%ED%8C%A8%ED%84%B4 O : 개방-폐쇄 원칙 (Open/closed principle) 클래스의 변경은 최소화(Close)하고 확장은 최대화(Open)합니다. 확장가능성을 고려해 자바같은경우 인터페이스나 추상클래스를 이용하여, 내부적인 수정보다는 확장 가능성을 열어두는 방법으로 작성한다. L : 리스코프 치환 원칙 (Liskov substitution principle) 개방 폐쇄 원칙과 마찬가지로 자바에서는 일반적으로 쓰이고 있는 규칙입니다. (특별한 이유가 없으면 구현체가 아닌 원형을 선언하여 사용하기 때문에...) List<String> list = new ArrayList<String>(); 즉 ArrayList 상위 인터페이스인 List로 업캐스팅 할 경우 완벽한 호환을 보장해야합니다. I : 인터페이스 분리 원칙 (Interface segregation principle) 인터페이스에 사용하지 않을 규칙들을 분리하는 원칙입니다. 부모 인터페이스는 구현에 있어서 필수인 최소의 추상메서드만 가지고 있어야합니다. 구현에 필요없는 추상메서드가 있다면 이 단위를 더 쪼개거나 설계를 다시 생각해봐야합니다. D : 의존관계 역전 원칙 (Dependency inversion principle) 오직 하위 객체가 상위 객체에 의존해야합니다. 상위 객체가 하위 객체에 의존해서는 안됩니다. 기초적인 것 이지만 상위 객체가 하위 객체에 의존한다면..... 수정하기도 어려워지고 유지보수도 오류 가능성 확장성 모두를 잃어버리는 걸 포함해... 상위 객체라고 부를수도 없을 것 같습니다... - 자바