본문 바로가기

개발공부/디자인패턴

(5)
[디자인패턴] 템플릿 메소드 패턴(Template Method Pattern) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 김영한님 강의인 스프링 핵심원리 - 고급편을 보면서 템플릿 메소드 패턴에 대해 다시 복습하고자 '얄팍한 코딩사전 : 객체지향 디자인패턴 2'을 참고하였습니다. 템플릿 메소드 패턴이란? 어떤 같은 형식을 지닌 특정 작업들의 세부 방식을 다양하고자 할 때 사용하는 패턴입니다. 변하지 않는 것은 추상클래스의 메서드로 서언하고, 변하는 부분은 추상 메서드로 선언하여 자식 클래스가 오버라이딩 하도록 처리합니다. 이렇듯 특정 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체적인 구조는 바뀌지 않으면서, 특정 단계에서는 수행하는 내용을 바꾸는 패턴입니다. 예를 들어 대대로 전통..
[디자인패턴] 스테이트 패턴(State Pattern) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 스테이트 패턴이란? 객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴으로 이렇게 하면 객체는 마치 자신의 클래스를 바꾸는 것 처럼 보입니다. 이 패턴을 사용하는 주된 목적은 상태 전이를 위한 조건 로직이 지나치게 복잡한 경우 이를 해소하는 것 입니다. 즉, 각 상태에 대응하는 별도의 클래스를 만들고 상태전이 로직을 그 클래스들로 옮기는 작업을 뜻합니다. 💡 상태 전이 로직이란? 객체의 상태와 이들 간의 전이 방법을 제어하는 것으로 클래스 내부 여기저기에 흩어져 존재하는 경향이 있습니다. 스테이트 패턴의 장점은? - if / else / switch를 ..
[디자인패턴] 전략 패턴(Strategy Pattern) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 전략 패턴이란? - 옵션들마다의 행동들을 모듈화해서 독립적이고 상호 교체 가능하게 만드는 것입니다. - 객체들이 할 수 있는 동작을 각각의 전략으로 만들어 놓고 동적으로 동작을 변경해야 한다면 전략만 변경하여 동작이 바뀌도록 하는 패턴입니다. - 일반적으로 if else로 구성된 코드 블록이 비슷한 기능 혹은 비슷한 알고리즘을 수행하는 경우에 전략 패턴을 적용함으로써 코드를 확장시킬 수 있습니다. 전략 패턴의 장점은? - Strategy는 파싱 클래싱의 좋은 대안입니다. 클래스를 상속하고 메소드를 오버라이딩 하는 대신 단순한 인터페이스를 구현만 하면 됩니다. - Stra..
[디자인패턴] 싱글턴 패턴(Singleton Pattern) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 싱글턴 패턴이란? 어플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어 사용하는 디자인입니다. 싱글턴 패턴의 장점은? 고정 된 메모리 영역을 얻으면서 한 번의 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지 할 수 있습니다. 싱글턴으로 만들어진 클래스의 인스턴스는 전역이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽습니다. 인스턴스가 절대적으로 한 개만 존재하는 것을 보증하고 싶을 경우 사용합니다. 두 번째 이용시 부터는 객체 로딩 시간이 줄어 성능이 좋아지는 장점이 있습니다. 싱글턴 패턴의 ..
[디자인패턴] 디자인 패턴 (Design Pattern) 종류 💡 코드가 보이지 않으시다면 드래그 해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 디자인 패턴은 봐도봐도 익숙치 않아 공부를 하며 정리를 해야겠다고 생각했습니다. 😂 디자인 패턴 (Design Pattern) 이란? - 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용을 할 수 있는 훌륭한 해결책입니다. 디자인 패턴의 종류는? 생성 패턴 - 객체 생성에 관련된 패턴 - 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공 구조 패턴 - 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴 ex) 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶어 새로운..