SOLID 원칙, 템플릿 메소드 패턴

allnight5·2022년 11월 21일
2

자바 개념정리

목록 보기
4/28

SOLID

SRP 단일 책임원칙

한클래스는 하나의 책임만을 가져야한다
하나의 리턴값만을 가져야한다.
변경이 발생하였을 때 변경해야 될 부분이 적으면 단일 책임 원칙을 잘따른 것이다
클래스를 변경해야 하는 이유가 오직 하나여야한다.
결제버튼의 위치가 변경되었지만 결제기능에 대한 영향은 없다.

OCP – 개방/패쇄 원칙

확장에는 열려있으나 변경에는 닫혀있어야한다.

템플릿 메소드 패턴 검색해보기

참조
https://jdm.kr/blog/116

검색해본 결과

템플릿 메소드 패턴은 "알고리즘의 뼈대"를 맞추는 것에 있습니다. 즉, 전체적인 레이아웃을 통일 시키지만 상속받은 클래스로 하여금 어느정도 유연성을 주도록하는 디자인 패턴입니다.
추상 메소드(abstrcat method)와 훅 메소드(hook method)를 적절히 사용해서 전체적인 알고리즘의 뼈대를 유지하되 유연하게 기능을 변경할 수 있도록 하고자 할 때 사용하면 유용하다

// 만약 다른 무언가를 사용하려면 true로 바꿔야 합니다.
// 이 메소드는 "후킹(Hooking)" 용도로 사용합니다.
boolean isUsingPrepareOther(){
	return false;
}

// 다른 무언가가 필요하면 사용합니다.
// isUsingPrepareOther 값에 의해 오버라이드 해서 사용 합니다.
//훅 메소드 필요할 때 위쪽에 false을 true로 바꿔서 아래 메소드를 사용할수 있도록해준다.
void prepareOther(){};

구현 예시

@Override
boolean isUsingPrepareOther() {
	return true;
}

@Override
void prepareOther() {
	System.out.println("화살을 준비합니다.");
}

LSP(Listkoy SUbstitution Principle) 리스코프 치환원칙

서브타입은 언제나 자신의 상위 타입으로 교체할 수 있어야한다.
정확성을 깨트리면 안된다.

객체(메소드)가 없다면 이렇게 안쪽에 선언해야줘한다
다른클래스들은 이클래스의 경우 무선충전이 없다 그러니 이객체는 없는객체다 라는 선언을 해준다.
public void wir(){
throw new NotSupporedException();
}

DIP – 의존관계 역전 원칙

의존관계 연적원칙은 이러한 의존관계를 맺을 때 어떻게 하면 변화에 용이하게 대응할 수 있을 것인가에 대한 가이드이다
변하기 쉬운것과 어려운 것을 구분한다.
변하기 쉬운 것
-구체적인 행동
스마트폰으로 전화를건다
이메일을 발송한다.
카카오톡 메시지를 전달한다.

변하기 어려운 것
-흐름이나 개념같은 추상적인것
전화를 건다
메시지를 전달한다.
(쉬운 것 2가지를 전달한다 의 메소드 하나에 적용이된다.
이메일을 발송한다.
카카오톡 메시지를 전달한다.
이 메소드에서 보내는 내용이나 변경사항으로 인하여
이메일을 발송한다나 카카오톡 메세지를 전달 수정해야한다면둘다 수정해야 하기때이다.
)

profile
공부기록하기

1개의 댓글

comment-user-thumbnail
2022년 11월 22일

solid 원칙이 중요한데 입에 잘 안달라 붙더라고요 ㅎㅎ 덕분에 저도 다시 읽어보고 갑니다!

답글 달기