목록IT/디자인 패턴 (5)
미처 완성되지 못한 알고리즘
Undo기능을 추가할 때 유용하다. abstract class Command { protected Receiver m_receiver; public Command(Receiver receiver) { m_receiver = receiver; } public abstract void Execute(); } class ConcreteCommand : Command { public ConcreteCommand(Receiver receiver) : base(receiver) { } public override void Execute() { m_receiver.Action(); } } class Receiver { public void Action() { Console.WriteLine("Called Receiv..
상태 체크를 하여, 변경 시 결과에 따라 수행시킬 수 있다. 주로 UI에 쓰인다. abstract class Observer { public abstract void Update(); } abstract class Subject { private List m_observers = new List(); public void Attach(Observer observer) { m_observers.Add(observer); } public void Detach(Observer observer) { m_observers.Remove(observer); } public void Notify() { foreach (Observer o in m_observers) o.Update(); } } class Concret..
어댑터 패턴: 기존에 쓰던 메소드나 클래스를 새로운 클래스에 매핑을 해준다. 기능 변경과 추가했을 때 어댑터 패턴을 사용하여 유지보수가 가능하다. ex) class Target { public virtual void Request() { Console.WriteLine("Target Request Method"); } } class Adaptee { public void SpecificRequest() { Console.WriteLine("Adaptee SpecificRequest Method"); } } class Adapter : Target { private Adaptee m_adaptee = new Adaptee(); public override void Request() { m_adaptee.S..
abstract class Product { } class ConcreteProductA : Product { } class ConcreteProductB : Product { } abstract class Creator { public abstract Product FactoryMethod(); } class ConcreteCreatorA : Creator { public override Product FactoryMethod() { return new ConcreteProductA(); } } class ConcreteCreatorB : Creator { public override Product FactoryMethod() { return new ConcreteProductB(); } } class..
class Sington { private static Sington _instance = null; private Sington() { } public static Sington Instance { get { if (_instance == null) _instance = new Sington(); return _instance; } } public void DrawMessage() { Console.WriteLine("안녕하세요."); } } class Program { static void Main(string[] args) { Sington.Instance.DrawMessage(); }//Main }//class ------------------------------------------------..