Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- gcc regex
- 정규식 컴파일
- CentOS7
- subporcess path
- c3 축 가리기
- selinux port 등록
- python os
- 정규식 활용
- influxdb 설치
- python subprocess
- c++ 정규식
- 백준
- 1697
- snmp test
- c3 초
- c3 축 없애기
- snmp
- 정규식 문자열 출력
- gcc 업데이트
- c3 step graph
- g++ 업데이트
- linux시간으로 변경
- regex_search
- InfluxDB
- centos pyhon 설치
- c3 second
- semanage
- grafana dashboard
- telegraf
- python popen
Archives
- Today
- Total
리셋 되지 말자
ISP - 인터페이스 분리 원칙 본문
"클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안 된다." - 로버트 C. 마틴
인터페이스 분리 원칙은 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다. - 위키백과
예시(책의 예시가 이해가 안가서 다른 사이트를 많이 찾아보고 혼자 생각해냄)
- Action 인터페이스
package isp01;
public interface Action {
public abstract void buy();
public abstract void sell();
}
위와같은 인터페이스가 존재할 때, 구매자와 판매자를 구현한다고 가정한다.
- Guest(구매자)
package isp01;
public class Guest implements Action{
public void buy() {
//물건 사기
}
public void sell() {
//필요 없음
}
}
- Seller(판매자)
package isp01;
public class Seller implements Action{
public void sell() {
//물건 팔기
}
public void buy() {
//필요 없음
}
}
위처럼 구매자는 buy()라는 메서드만 필요함에도, sell()이라는 메서드를 강제로 구현해야 한다.
반대로 판매자는 sell()이라는 메서드만 필요함에도, buy()라는 메서드를 강제로 구현해야 한다.
-> 비록 비워두어도 되지만 빈 것도 구현이니....
이처럼 자신이 사용하지 않는 메서드를 구현하지 않도록 인터페이스를 세분화 하는 것이 ISP라고 이해했다.
이제 클래스가 사용하는 메서드만 구현하도록 인터페이스를 나누어야 한다.
package isp01;
interface Buy {
public abstract void buy();
}
interface Sell{
public abstract void sell();
}
- 이렇게 나누면 아래와 같이 Seller와 Guest가 각각 필요한 메서드만 구현하면 된다.
package isp01;
public class Guest implements Buy{
public void buy() {
//물건 사기
}
}
package isp01;
public class Seller implements Sell{
public void sell() {
//물건 팔기
}
}
'Java(폐지) > 객체지향 설계 5원칙-SOLID' 카테고리의 다른 글
DIP - 의존 역전 원칙 (0) | 2020.07.21 |
---|---|
SRP와 ISP (0) | 2020.07.21 |
LSP - 리스코프 치환 원칙 (0) | 2020.07.20 |
OCP - 개방 폐쇄 원칙 (0) | 2020.07.20 |
SRP-단일 책임 원칙 (0) | 2020.07.20 |
Comments