using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace StrategyPattern { /// <summary> /// Strategy pattern을 이용. : SYNCmail Mobile도 같은 방법으로 구현해보는 것이 어떨까 고민되고 있음. /// </summary> public abstract class OperationPanel { public IOperation Operation { get; set; } public void DoOperation() { Operation.DoMainOperation(); } } public interface IOperation { void DoMainOperation(); void DoSubOperation(); void LoadOperation(); } public class CheckPasswordOperation : IOperation { public string LogonName { get; set; } public string Password { get; set; } public void DoMainOperation() { Console.WriteLine("Check Password"); } public void DoSubOperation() { Console.WriteLine("Cancel operation"); } public void LoadOperation() { Console.WriteLine("Display"); } } //abstract class의 이용을 하지 않고, Interface의 구현 및 조합을 통해서, 각각의 class의 구현을 행한다. //abstract method를 사용하지 않고, abstract method에서 사용되는 동작의 정의를 Interface를 통한다. 그 interface의 구현을 통해서 만들어주는 패턴 }