객체 지향
yeoseon opened this issue · comments
Mediator 패턴 중...
객체 지향에서는 한 곳에 집중되는 것을 피해서 처리를 분산시키는 경우가 많다.
하지만 각 클래스에 분산시킬 것은 분산시키고, 집중시킬 것은 집중시키지 않으면, 분산이 오히려 화를 부르게 될 수 있다.
Source
Interview_Question_for_Beginner :: 객체지향프로그래밍이란?
객체지향 프로그래밍
개요
현실 세계를 프로그래밍으로 옮겨와 구현한다.
추상화: 현실세계의 사물들을 객체라고 보고, 그 객체로부터 필요한 특징을 뽑아와 프로그래밍하는 것
특징
-
높은 재사용성
자주 쓰는 로직을 미리 만들어두면, 부품으로서의 재사용성이 높아진다.
자주 쓰인다는 것은, 그만큼 로직에 신뢰도가 있다는 것이기 때문에, 해당 라이브러리를 사용하여 발생하는 오류는 해당 라이브러리를 사용한 로직에서만 에러를 추적하면 된다.(신뢰성 확보) -
높은 생산성
라이브러리 내부적으로 어떻게 동작하는지를 일일히 다 알지 않아도 제공되는 기능만 사용하면 되기 때문에 생산성이 높아진다. -
수월한 데이터 모델링
객체와 데이터모델을 맵핑하는 것이 쉬워서, 요구사항을 명확히 파악할 수 있다. -
많은 overhead
객체 간의 정보 교환이 모두 메시지 교환을 통해 일어나므로, overhead가 발생한다.
이는 하드웨어의 발전으로 많은 부분 보완되었다. -
상태를 갖는 객체
객체 내에 변수가 존재하고, 이 변수를 통해 예측 불가능한 상태를 갖게되어 내부 버그를 발생시킬 수 있다.
함수형 프로그래밍의 등장
위에서 논한 상태를 갖는 객체라는 치명적인 단점이 바로 등장 배경이라고 볼 수 있다.
함수형 프로그래밍 참고
객체지향적 설계 원칙
- SRP(Single Responsibility Principle) : 단일 책임 원칙
클래스는 단 하나의 책임을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유이어야 한다. - OCP(Open-Closed Principle) : 개방-폐쇄 원칙
확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다. - LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다. - ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다. - DIP(Dependency Inversion Principle) : 의존 역전 원칙
고수준 모듈은 저수준 모듈의 구현에 의존해서는 안된다.