728x90
반응형

DesignPattern 6

[Java] 디자인 패턴 - Composite 패턴

오랜만에 디자인 패턴 글을 포스팅한다. 한동안 회사의 프로젝트 프로토타입을 만드는 것과 새로운 라이브러리를 사용법을 익히고 하느라 정신없이 하루하루 지나갔던것 같고 그에따라 포스팅이 늦어진 점을 되게 반성하게 된다. 오늘은 디자인 패턴의 구조패턴 중 Composite pattern 에 대해 공부한 내용을 정리한다. 컴포지트란? OOP에서 컴포지트는 하나 이상의 유사한 객체를 구성으로 설계된 객체로 모두 유사한 기능을 나타낸다. 이를 통해 객체 그룹을 조작하는 것처럼, 단일 객체를 조작할 수 있다. 컴포지트 패턴은 무엇인가? 컴포지트 패턴은 클라이언트가 복합 객체(group of object)나 단일 객체를 동일하게 취급하는 것을 목적으로 한다. 여기서 컴포지트의 의도는 트리 구조로 작성하여, 전체-부분(..

디자인패턴 2022.08.03

[Java] 디자인 패턴 - 전략 패턴

Strategy 패턴(전략 패턴) 객체들이 할 수 있는 행위 각각에 대해서 전략 클래스를 생성하고, 유사한 행위들을 캡슐화 하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장할 수 있는 방법을 말한다. 객체가 할 수 있는 것들을 전략으로 두고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 행위의 수정이 가능하도록 만든 패턴이다. 여러 알고리즘을 하나의 추상적인 접근점을 만들어 접근점에서 서로 교환 가능하도록 하는 패턴이라고 정의 할 수 있다. 1. 전략 패턴 사용 이유 예를 들어, 게임 캐릭터 클래스가 존재하고, 칼(Knife), 검(Sword), 도끼(Ax) 라는 클래스들이 있고, 이 클래스들은 ..

디자인패턴 2022.08.03

[Java] 디자인 패턴 - 어댑터 패턴

Adapter 패턴이란 어댑터 패턴 : 한 클래스의 인터에스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 이 패턴을 사용하면 다른 인터페이스와의 호환성 문제를 해결할 수 있다. 여기서 말하는 어댑터는 우리가 통상 사용하는 220V 전기 플러그를 여행을 갔을때 그 나라에 맞는 규격에 해당하는 전기 플러그 변환 어댑터라고 생각하면 될 것이다. A사 B사 A사 B사 티켓선택 티켓선택 티켓출력 티켓선택 오프라인 구매 오프라인 구매 온라인 구매 메뉴 가져오기 이런 A와 B사의 티켓판매 기계가 있다고 가정을하자. A회사는 오프라인으로만 판매를 하고, B사는 온,오프 라인 나누어서 구매를 할 수 있다. 또 메뉴를 가져오는 기능도 가지고 있다. 여기서 A사의 기술을 B사가 인수를 제안하여 시스템을 통합..

디자인패턴 2022.08.03

[Java] 디자인 패턴 - 빌더 패턴

Builder 패턴 빌더 패턴은 생성 인자가 많을 시, 빌더 객체를 통해 구체적인 객체를 생성한다. 빌더 패턴은 추상팩토리 패턴이나 팩토리 메소드 패턴과는 조금 다르다. 빌더 패턴도 새로운 객체를 만들어 반환하는 패턴이기는 하나, 동작방식이 조금 다르다. 빌더 패턴은 생성자에 들어갈 매개 변수의 수에 관계없이 차례대로 매개 변수를 받아들이고, 모든 매개 변수를 받은 뒤에 이 변수들을 통합하여 한번에 사용한다. 장점 객체 생성에 필요한 파라미터의 의미를 코드 단에서 명확히 알 수 있다. (가독성이 좋다) 생성에 필요한 파라미터가 추가될 때 마다, 생성자 오버로딩을 안해도 된다. 단점 추가적인 빌더 클래스를 구현해야 한다. 활용 생성자 인자가 많은 경우.User user = new User(); user.s..

디자인패턴 2022.08.03

[Java] 디자인 패턴 - 팩토리 패턴

팩토리 패턴 팩토리 패턴은 생성패턴(Creational Pattern) 중 하나이다. 생성 패턴은 인스턴스를 만드는 절차를 추상화하는 패턴이다. 생성 패턴에 속하는 패턴들은 객체를 생성, 합성하는 방법이나 객체의 표현방법을 시스템과 분리해준다. 생성 패턴은 시스템이 상속보다 복합방법을 사용하는 방향으로 진화되어 가면서 더 중요해지고 있다. 생성 패턴에는 중요한 이슈가 2가지 있다. 생성 패턴은 시스템이 어떤 Concrete Class를 사용하는지에 대한 정보를 캡슐화한다. 생성 패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 결합하는지에 대한 부분을 완전히 가려준다. 이 두가지를 정리해보면, 생성 패턴을 이용하여 무엇이 생성되고, 누가, 어떻게, 언제 육하원칙 비슷하게 결정하는데에 유연성을 확보할..

디자인패턴 2022.08.03

[Java] 디자인패턴 - 싱글톤 패턴

싱글톤패턴(Singleton Pattern) 싱글톤패턴 애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고 그 메모리에 인스턴스를 만들어 사용하는 디자인패턴이다. 생성자가 여러번 호출이 되더라도 실제로 생성되는 객체는 하나뿐이고, 최초로 생성된 이후에 호출된 생성자는 생성된 최초 객체를 반환한다. 그래서 생성자를 private로 선언하여 getInstance()로 받아서 사용한다. 싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴이다. 이말은 인스턴스가 필요할 때마다 똑같은 인스턴스를 new해서 생성하는 것이 아닌 기존에 존재하는 인스턴스를 사용하게 하는것이다. 싱글톤패턴을 사용하는 이유 고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에 메모리 낭비..

Java 2022.08.03
728x90
반응형