좋은 객체 지향 프로그래밍이란??
객체지향 프로그래밍은 여러개의 독립된 단위, 객체들의 모임으로 파악하고 또한 객체는 메시지를 주고받고 데이터 처리가능(협력)
유연하고 용이 ,
다형성을 실세계로 비유를 하면 역할과 구현으로 나뉜다.
역할과 구현으로 구분하면 세상이 단순해지고, 유연해지고 변경도 편리해진다.
클라이언트는 역할만 알면된다(인터페이스)
클라이언트는 구현 대상의 내부구조 및 대상 자체를 변경해도 영향을 받지않는다.
오버라이딩 : 부모 클래스의 메소드를 재정의
오버로딩 : 타입을 다르게 함
다형성의 본질은 협력이라는 객체사이의 관계에서 시작해야함.
클라이언트는 변경하지않고 서버의 구현기능을 유연하게 변경해야한다.
중요*
확장 가능한 설계, 클라이언트에 영향을 주지않는 변경가능
인터페이스를 안정적으로 잘설계하는것이 중요
설계가 중요하다.
역할이 변경되면 클라,서버의 큰 변경이 발생함.
객체지향의 꽃은 "다형성"이 중요하고 스프링은 다형성을 극대화해서 이용할수있게 도와준다.
스프링에는 제어의 역전(IOC),의존관계 주입(DI) 다형성을 활용해서 역할 구현을 편리하게 다룰수있다.
스프링을 사용하면 레고 블럭 조립하듯이, 공연 무대의 배우를 선택하듯이 구현을 편리하게 변경가능
즉 좋은 객체지향은 다형성을 잘 활용한 인터페이스 설계인듯하다.
역할이 바뀌지 않는이상 구현체들이 변화가 되도 사용자 입장에서는 사용하는데에 불편함이없다.
강의를 보니 프로젝트할때 오토와이어링을 무분별하게 객체지향적으로 짜고있는거 같지가 않다.
이부분은 다음강의에서 좀더 다뤄봐야겠다.