[Design Pattern] 스트래티지(Strategy) 패턴
- Module/DesignPattern
- 2012. 12. 25.
스트래티지(Strategy) 패턴
- 서로 밀접한 관계를 가지는 여러 클래스에 대해 필요한 시점에 수행하는 클래스를 골라 사용하고자 할 때 사용하는 패턴.
- abstract class 를 implement 시켜서 각각의 type 의 클래스를 생성한다.
- 그리고 하나의 클래스에서 각각의 클래스들을 관리하여준다.
새롭게 생성되는 type 가 있을 때 쓰면 좋겠다. 라고 생각된다.
더이상 설명은 없고 각각의 클래스에 대한 소스코드를 첨부한다.
Abs_Contents.java
public interface AbsContents {
void Draw(); // on Android
void Rendering(); // on OpenGL
}
Content_Card.java
public class Content_Card implements AbsContents {
@Override
public void Draw() {
System.out.println("Content Card's Draw()");
}
@Override
public void Rendering() {
System.out.println("Content Card's Rendering()");
}
}
Content_Image.java
public class Content_Image implements AbsContents {
@Override
public void Draw() {
System.out.println("Content Image's Draw()");
}
@Override
public void Rendering() {
System.out.println("Content Image's Rendering()");
}
}
ContentsMgr.java
public class ContentsMgr {
private AbsContents m_Contents;
ContentsMgr() {
m_Contents = new Content_Card();
}
// setter - Content's type
void SetContent(AbsContents _contents) {
m_Contents = _contents;
}
void Draw() {
m_Contents.Draw();
}
void Render() {
m_Contents.Rendering();
}
}
main.java
public class main {
public static void main(String[] args) {
ContentsMgr CtMgr = new ContentsMgr();
CtMgr.Draw();
CtMgr.SetContent(new Content_Image());
CtMgr.Draw();
}
}
위와 같이 하면 된다.
'Module > DesignPattern' 카테고리의 다른 글
| Singleton Design Pattern Make DLL (0) | 2009.11.04 |
|---|---|
| singleton template 싱글턴 템플릿 (0) | 2009.05.22 |
| [디자인패턴] 팩토리 패턴[Factory Pattern](C#) (0) | 2008.07.22 |
| 디자인패턴] 싱글턴 패턴[SingleTurn Pattern](C#) (0) | 2008.07.22 |
strategy.zip