솔리드
→ “로버트 마틴”이 만든 원칙 이다.
- SRP - 단일 책임 원칙 → 클래스는 하나의 책임만 가져야 합니다.
- OCP - 개방-폐쇄 원칙 → 기존 코드를 변경하지 않고 기능을 추가할 수 있어야 합니다.
- LSP - 리스코프 치환 원칙 → 부모 클래스(기반 타입)와 자식 클래스(서브 타입)는 서로 교체해서 사용할 수 있어야 합니다.
- ISP - 인터페이스 분리 원칙 → 필요하지 않은 인터페이스는 분리 시켜야 합니다.
- DIP - 의존성 역전 원칙 - 제일 중요 → 구체적인 것보다는 추상적인 것에 의존해야 합니다.
- ISP 예시 코드
interface CookAble { void cook(); } interface KnifeAble { void kill(); } class 백종원 implements CookAble { @Override public void cook() { } } class 전사 implements KnifeAble, CookAble { @Override public void kill() { System.out.println("공격"); } @Override public void cook() { System.out.println("요리"); } } public class Hello { public static void main(String[] args) { } }
- DPI 예시 코드
class 사각형 { protected int height; protected int width; public void 넓이확인() { System.out.println(height * width); } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } } class 정사각형 extends 사각형 { @Override public void setWidth(int width) { if (height == 0) { this.width = width; return; } if (width == height) { this.width = width; return; } System.out.println("정사격형은 width, height가 동일해야 합니다."); } @Override public void setHeight(int height) { if (width == 0) { this.height = height; return; } if (height == width) { this.height = height; return; } System.out.println("정사격형은 width, height가 동일해야 합니다."); } public void 넓이확인() { if (height == 0 || width == 0) { System.out.println("오류"); return; } System.out.println(height * width); } } public class Hello { public static void main(String[] args) { 정사각형 s1 = new 정사각형(); s1.setWidth(10); s1.setHeight(10); s1.넓이확인(); } }
Share article