Java/SOLID 3

[SOLID] ISP | 인터페이스 분리 원칙 (Interface Segregation Principle)

[SOLID] ISP | 인터페이스 분리 원칙 해당 글은 LSP와 추상화에 대해 이해하고 계시면 더욱 이해하기 쉽습니다. 추상화가 궁금하시다면 https://eojil-hyunin-in.tistory.com/3 이 글을 읽어주세요! 우선 ISP의 정의부터 뭔지 알아보죠! 인터페이스 분리 원칙은 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다. 인터페이스는 객체가 사용하는 메서드를 정의해놓는 설계도와 같은 역할을 가집니다. 예시 아래 예시들은 기능을 구현하는 클래스들은 인터페이스로부터 구현을 받아야 한다는 전제하에 설명된 예시들입니다. ISP를 지키는 예시를 설명하자면 자동차에 존재하는 기능들은 전진, 후진, 정지, 가속 등등 여러 기능들이 존재합니다. public interfa..

Java/SOLID 2022.04.21

[SOLID] OCP | 개방 폐쇄의 원칙 (Open Closed Principle)

[SOLID] OCP | 개방 폐쇄의 원칙 (Open Closed Principle) 개방 폐쇄의 원칙 : 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다 즉, "개방 폐쇄의 원칙의 핵심은 기존 코드를 건드리지 않는다는 것입니다." 어떻게 기존 코드를 수정하지 않고 확장할 수 있는 거지? OCP를 알지 못한 상태의 설계는 잘못 되어있을 가능성이 높습니다 따라서 개방 폐쇄의 원칙을 지키기는 어렵습니다 그러므로 코드의 "설계"부터 바꾸어야 합니다. 기존 설계 방식 기존의 설계 방식을 셰프가 요리를 내어주는 과정을 통해 기존의 설계 방식이 왜 잘못되었는 지를 알아봅시다. 기존에는 셰프가 음식을 요리하여 직접 손님에게 제공하였습니다. 이런 설계라면 손님이 많을 때는 셰프가 손님을 오래 기다리게..

Java/SOLID 2022.04.14

[SOLID] LSP | 리스코프 치환 원칙 (Liskov Substitution Principle)

[SOLID] LSP | 리스코프 치환 원칙 (Liskov Substitution Principle) 부모 클래스를 상속받은 자식 클래스로도 부모 클래스의 메소드들을 동작할 수 있어야 하는 원칙입니다. 다시 말해 부모 클래스로 짜인 코드를 자식 클래스로 변경하였을 때도 원활하게 프로그램이 동작할 수 있어야 합니다. 예시 예를 들어 부모와 자식이 있습니다. 부모는 자동차를 운전할 줄 압니다. 자식은 운전하는 방법을 부모로부터 습득(상속)합니다. 부모로부터 운전하는 방법을 습득한 자식은 부모 대신 운전을 할 수 있어야 합니다. 리스코프 치환 원칙에 대해 알아보기 위해, 원칙을 위반하는 동물/고양이 예제를 통해 알아봅시다. public class Animal { public String getName() { ..

Java/SOLID 2022.04.13