라벨이 디자인 패턴인 게시물 표시

(디자인 패턴) Strategy Pattern

이미지
*스트래티지 패턴 동적으로 알고리즘을 교체할 수 있는 구조 알고리즘 인터페이스를 정의하고, 각각의 알고리즘을 클래스별로 캡슐화하여 각각의 알고리즘을 교체 사용가능하게 한다. 즉, 하나의 결과를 만드는 목적(메소드)은 동일하나, 그 목적을 달성할 수 있는 방법(전략, 알고리즘)이 여러가지 존재할 경우, 기본이 되는 템플릿 메소드 패턴과 함께 가장 많이 사용한다.

(디자인 패턴) 팩토리 메소드 패턴과 abstract 팩토리 패턴

이미지
*Factory Pattern은 인스턴스의 생성과정을 숨긴 채, 다 만들어진 인스턴스를 반환해주는 역할을 한다. 때문에 Factory Pattern은 생성과정에서 여러가지 작업을 해줘야 하는 상황에 사용한다. Factory 패턴에서 중요한 것은 생성할 객체의 추상화에 있다. (abstract를 말하는 것이 아니다.) 생성과정에서 추상화된 객체를 반환하여 상속받는 모든 자식의 클래스를 다루게 된다.즉, 생성과정의 변환에 관계없이 프로그래밍을 가능하게 하며 생성과정을 캡슐화하여 외부에 노출을 줄이게 된다. 그리고 코드의 확장성을  크게하여 새롭게 추가되는 기는ㅇ에 유연하게 대처할 수 있게해준다. 그리고 코드의 커플링을 낮추어 코드 유지차원에서도 효과를 톡톡히 볼 수 있다. Abstract factory Pattern을 사용하면 Strategy Pattern을 사용할 때 처럼 큰 유연성을 가져다 준다. 생성루틴을 확장할 수 있고, 프로그램 실행중에도 생성루틴을 다이나믹하게 갈아낄 ㅅ 있다. 그럼에도 사용하는 측의 코드에 전혀 영향이 가지 않는다는게 최대 장점이다. 하지만 코드의 양이 많아지고, 객체를 생성하기 까지 다소 복잡한 과정을 거쳐야 한다. 생성과정에 규모가 작다면 오히려 코드의 이해도를 떨어뜨리는 패턴이 될 가능성을 가직 있으나 신중하게 생각해서 적용해야 한다.