
솔리드
→ “로버트 마틴”이 만든 원칙 이다.
- 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