6. 전략 패턴 (Strategy Pattern) 전략 패턴이란? 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴으로 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 디자인 패턴이다. 즉, 전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴이다. 전략이란? 어떤 목적을 달성하기 위해 일을 수행하는 방식, 비즈니스 규칙, 문제를 해결하는 알고리즘 등 특히 게임 프로그래밍에서 게임 캐릭터가 자신이 처한 상황에 따라 공격이나 행동하는 방식을 바꾸고 싶을 때 스트래티지 패턴은 매우 유용하다. 전략 패턴 장점 시스템의 구조 및 Context Class를 변경하지 않고 요청에 맞는 로직을 추가 및 수정할 수 있다. 같은 인터페이스 양식을 가진 알고리즘을 별도로 캡슐화하여 코드의 가독성이 높아지며, 생산성이 높아진
행동패턴(Behavioral Patterns) 이란? 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴이다. 한 객체가 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하며 객체 사이의 결합도 최소화에 중점을 둔다. 패턴을 주로 클래스에 적용하는지 아니면 객체에 적용하는지에 따라 구분되는 패턴이다. 행동패턴 종류 행동패턴에는 아래와 같은 디자인 패턴이 존재한다. 책임연쇄 패턴(Chain of responsibility) : 책임들이 연결되어 있어 내가 책임을 못 질 것 같으면 다음 책임자에게 자동으로 넘어가는 구조이다. 커맨드 패턴(Command Pattern) : 명령어를 각각 구현하는 것보다는 하나의 추상 클래스에 메서드를 하나 만들고 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행한다. 인터프리터 패턴(Interpreter Pattern) : 문법 규칙을 클래스화한 구조를 갖는 SQL 언어나 통신 프로토콜 같은 것을
구조패턴(Structural Patterns) 이란? 구조패턴(structural patterns)은 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴이다. 예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶어 새로운 기능을 제공하는 패턴이다. 구조패턴 특징 서로 독립적으로 개발한 클래스 라이브러리를 마치 하나인 것처럼 사용할 수 있다. 여러 인터페이스를 합성하여 서로 다른 인터페이스들의 통일된 추상을 제공한다. 인터페이스나 구현을 복합하는 것이 아니라 객체를 합성하는 방법을 제공한다. 구조패턴 종류 구조 패턴에는 아래와 같은 디자인 패턴이 존재한다. 어댑터 패턴(Adapter Pattern) : 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록, 타 클래스의 인터페이스를 기존 인터페이스에 덧씌운다. 브리지 패턴(Bridge Pattern) : 추상화와 구현을 분리해 둘
생성패턴(Creational Patterns) 이란? 생성패턴은 객체의 생성에 관련된 패턴으로 객체의 생성절차를 추상화하는 패턴이다. 객체를 생성-합성하는 방법 / 객체의 표현방법과 시스템을 분리한다. 생성패턴 특징 생성패턴은 시스템이 어떤 구체 클래스(구체적인 클래스)를 사용하는지에 대한 정보를 캡슐화한다. 생성패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 서로 맞붙는지에 대한 부분을 완전히 가린다. 즉, 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공한다. 생성패턴 종류 생성패턴에는 아래와 같은 디자인 패턴이 존재한다. 추상 팩토리 패턴(Abstract Factory Pattern) : 동일한 주제의 다른 팩토리를 묶어 준다. 빌더 패턴(Builder Pattern) : 생성(construction)과 표기(representation)를 분리해
토픽 : Design Pattern Design Pattern 의 개념 GoF Design Pattern 의 구성 Spring framework 에서 사용되는 대표적인 패턴 3가지 Observer 패턴을 이용하여 코드 작성해 보기 Design Pattern 의 개념 소프트웨어 공학론 안의 좋은 코드를 설계하기 위한 일종의 디자인(설계) 패턴. 좋은 코드란? 디자인 패턴에서 말하는 좋은 코드는 설계적 관점에서의 좋은 코드이다. 즉, 확장과 수정에 용이하여 설계 이후에도 추가적인 유지 보수에 비용이 적게들어가는 코드를 말한다. 객체지향적으로 생각하면 추구해야할 설계 방향은 다음과 같다. >객체 간 응집도는 높이고, 결합도는 낮게. 요구 사항 변경 시, 코드 변경을 최소화 하는 방향으로. 즉, 프로그램을 개발하는 과정에서 빈번하게 발생하는 디자인(설계) 상의 문제를 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 패턴이다. Desig