디자인 패턴/행위 패턴

    [디자인 패턴] 커맨드(Command) 패턴

    오늘 공부할 패턴은 커맨드 패턴입니다. 1. 커맨드 패턴이란 커맨드 패턴은 요청(메소드 실행)을 캡슐화 하여 1)요청 받은 기능이 무엇인지, 2) 이를 처리하는 객체가 누구인지를 은닉합니다. 예를 들어, Menu 클래스는 각 선택 항목인 MenuItem 객체의 집합입니다. 각 MenuItem을 클릭하면 특정 동작을 수행해야 하는데 Menu 클래스가 이들을 전부 알고 있어야 할까요? 그러면 Menu 클래스가 매우 복잡해지고, 결합도도 너무 강해집니다. 이런 순간에 커맨드 패턴을 활용하면 문제들을 해결할 수 있습니다. 2. 활용하기 좋은 순간 요청(메소드 실행) 자체를 객체로 매개변수화 하고 싶을 때 요청을 저장, 실행 등의 데이터화 하고 싶을 때 실행 취소, 재실행, 로깅 등을 지원하고 싶을 때 3. 예시..

    [디자인 패턴] 책임 연쇄(Chain of Responsibility) 패턴이란

    오늘 공부할 디자인 패턴은 책임 연쇄 패턴입니다. 1. 책임 연쇄 패턴이란 책임 연쇄 패턴은 기능을 요청하는 부분과 이를 처리하는 부분의 의존성을 제거하기 위한 패턴입니다. 예를 들어, 어떤 객체의 메소드가 호출되었더라도 기능을 수행하지 않아도 됩니다. 객체가 상속한 클래스들을 순회하면서 해당 메소드를 처리할 수 있는 클래스를 찾으면 처리되고, 찾지 못하면 아무런 동작도 하지 않습니다. 책임 연쇄 패턴이 어떻게 동작하는지는 알겠는데 실제로 적용된 사례에는 뭐가 있을까요? 그래픽 편집기, 이벤트 처리기에서 책임 연쇄 패턴을 사용하고는 합니다. 그룹화된 도형을 클릭하고 글자 크기를 변경하면 내부의 글자들만 크키가 변경됩니다. 도형에는 아무런 영향을 주지 않는 것이죠. 앞에서 '그룹화'된 도형 부분에서 눈치채..