Chain of Responsibility

책임 사슬 개요

특정한 동작을 여러 객체가 엮여서 처리할 때 사용. 주로 이벤트 핸들러를 구현할 때 사용한다.

코드

public class Process
{
    private Process next;
    public void SetNext(Process next) => this.next = next;
    public void Run(bool someCheck)
    {
        if(someCheck)
        {
            //Process
        }
        else
        {
            //Process
            next.Run();
        }
    }
}

//상속을 통한 구현도 가능하다
public class Parent
{
    public virtual void Run(bool someCheck)
    {
        //SomeProcess
    }
}

public class Child : Parent
{
    public virtual void Run(bool someCheck)
    {
        if(someCheck)
        {
            //Process
        }
        else
        {
            base.Run(someCheck);
        }
    }
}