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의 구현을 통해서 만들어주는 패턴
}