SOLID
(Single Responsibility Principle)
📌 한 클래스는 하나의 책임만 가져야 한다
(Open Closed Principle)
📌 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀 있어야 한다
확장을 할려면 기존 코드를 변경해야 하지 않나?🤔
다형성을 활용
인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현
새로운 클래스를 만드는 것은 기존 코드를 변경하는 것이 아니다
구현 객체를 변경하려면 클라이언트 코드를 고쳐야 함
다형성을 사용하지만 OCP 원칙은 지킬 수 없음
위의 문제를 해결하기 위해서는
객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자 필요!!
- 별도의 조립, 설정자가 스프링🍃 이 해결해줌
(Liskov Substitution Principle)
자동차 인터페이스의 엑셀은 앞으로 가라는 기능
뒤로 간다면 🚨LSP를 위반
기능적으로 올바르게 구현했는가의 문제
(Interface Segregation Principle)
인터페이스가 명확해지고, 대채 가능성이 높아진다
- 덩어리가 크면 다 구현하기 힘들어서 대체 힘들어짐
- 좀 더 명확한 역할의 인터페이스로 분리하면 구현하기 쉽고 대체 가능성이 높아짐
(Dependency Inversion Principle)
📌"추상화에 의존해야지 구체화에 의존하면 안된다"
게시글은 김영한님의 인프런 강의를 들으면서 정리한 내용입니다.