목차

템플릿 메소드 패턴(Template Method Pattern)

public interface A {
	String a = 1; // a는 바꿀 수 없음
	
	void X(); // 오버라이딩을 무조건 해라
	
	default String Y() { // 디폴트는 이거고 오버라이딩할 수 있다
		return null; 
	} 
	
	static void Z() { // Z는 바꿀 수 없음
		System.out.println("스태틱 함수");
	}
}
----
public class AA implements A {
	@Override
	public void X() {
		System.out.println("추상 메소드 오버라이딩");
	}
	...

	public void Hongseok() {
		System.out.println("좋은 개발자 되고 싶어요");
	}
}
-----
public abstract class B {
	protected String W(); // 자식 클래스에서 무조건 구현해라
}
-----
public class BB extends B {
	protected String W() {
		System.out.println("재밌게 개발하고 싶어요");
	}	
}

public class C {
	@Autowired
	List<A> as;

	public void doSomething() {
		for (i = 0; i< as.length; i ++) {
			as.get(i).X();
		}
	}
}

전략 패턴(Strategy Pattern)

  1. 객체들의 행위에 대해한 새로운 (전략) 클래스 생성
  2. 전략 클래스를 캡슐화하는 인터페이스 생성
  3. 객체의 행위를 동적으로 바꿀 경우 객체의 행위를 직접 수정 x, 주입되는 전략을 수정 o

[디자인패턴] 전략 패턴 ( Strategy Pattern )