https://inpa.tistory.com/category/%EB%94%94%EC%9E%90%EC%9D%B8%20%ED%8C%A8%ED%84%B4/OOP
https://velog.io/@haero_kim/SOLID-%EC%9B%90%EC%B9%99-%EC%96%B4%EB%A0%B5%EC%A7%80-%EC%95%8A%EB%8B%A4
(Single Responsibility Principle)
한 클래스는 하나의 책임(역할)만
(Open Closed Priciple)
확장에는 open, 수정에는 close
요구사항이 변경되더라도 기존 클래스를 수정하지 말고 새로운 클래스를 만들어서
https://inpa.tistory.com/entry/OOP-%F0%9F%92%A0-%EC%95%84%EC%A3%BC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-OCP-%EA%B0%9C%EB%B0%A9-%ED%8F%90%EC%87%84-%EC%9B%90%EC%B9%99
X OCP위배
운전자
소나타 그랜저 BMW
O 이런식으로
운전자
자동차
소나타 그랜저 BMW
부모 객체 대신 자식 객체를 호출해도 부모를 완전히 대체할 수 있게
자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다
특정 클라이언트를 위한 구체적인 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다
인터페이스는 최소한의 기능만 제공하고 하나의 역할에 집중
https://blog.itcode.dev/posts/2021/08/16/interface-segregation-principle
인터페이스는 다중 상속이 되니까 기능을 여러 인터페이스로 나누고 필요한 기능만 상속
구체적인 것이 추상화된 것에 의존해야함.
자주 변경되는 구체적인 클래스에 의존하면 안된다.
구현 클래스보다 상위클래스(인터페이스, 추상클래스)에 의존
심문을 왕에 만들면 왕비가 못씀
재판관에