본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


반응형

DesignPattern

(6)
디자인 패턴 6 - Observer pattern 관찰자 패턴이라고 하며 변화가 일어 났을 때 , 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다. java swing jwt android의 event listener 에서 해당 패턴을 사용 하고 있다 . 자바 스윙의 이벤트 리스너를 통한 Obsever pattern 예시 IButtonListener 인터페이스 package com.company.observer; public interface IButtonListener { void clickEvent(String event); } Button 클래스 package com.company.observer; public class Button { private String name; private IButtonListener buttonListe..
디자인 패턴 5 - decorator pattern 데코레이터 패턴은 기존 뼈대 (클래스)는 유지하되 ,이후 필요한 형태로 꾸밀 때 사용한다. 확장이 필요한 경우 상속의 대안으로도 활용 한다. SOLID 중에서 개방폐쇄 원칙 (OCP)와 의존 역전원칙(DIP)를 따른다. 자동차를 예시로 decorator pattern을 알아보자 ICar 인터페이스 public interface ICar { int getPrice(); void showPrice(); } ICar 인터페이스는 Car 클래스의 뼈대 역할을한다 가격을 리턴하는 getPrice() 와 가겨을 출력하는 showPrice() 두 메서드를 가지고 있다. Audi 클래스 public class Audi implements ICar{ private int price; public Audi(int pric..
디자인 패턴 4 - proxy pattern Proxy는 대리인 이라는 뜻으로 , 뭔가를 대신해서 처리하는 것을 말한다. proxy Class를 통해 대신 전달하는 형태로 설계되며, 실제 client는 proxy로 부터 결과를 받는다. Cache의 기능 구현에 활용이 가능 하며 ,Spring에서는 AOP가 proxy pattern 으로 구현되어 있다 . SOLID 중 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다. 간단하게 proxy pattern으로 Cache를 구현해 보면 아래와 같다. 1. cache - cache는 데이터를 디스크가 아닌 메모리에 보관하여 반복될 경우 메모리에서 불러와 사용하기 때문에 캐시가 적용되면 성능 및 처리속도가 월등히 빠르다 정도로만 일단 알아두자 . 브라우저가 있고 브라우저는 IBrower 인터페이스를..
디자인 패턴 3 - Adapter pattern Adapter는 실생활에서는 100v 를 220v로 변경하거나 , 그 반대로 해주는 흔히 돼지코 라고 불리는 변환기를 예로 들 수 있다. 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용 할 수 있도록 한다. SOLID중 개방폐쇠 원칙(OCP)을 따른다 Adapter pattern을 실생활에서 콘센트 어뎁터를 통해 예시를 들어 보려한다. 에어컨(220v), 청소기(220v) , 헤어드라이어(110v) 3가지 가전 제품이 있고 각각 제품들은 110V와 220V 방식을 구현한다. 220v를 110v로 변환해주는 SocketAdapter가 있으며 우리집엔 110v 콘센트 밖에 없는 상황이다. 코드로는 아래와 같다. 110v와 220v 인터페이스 (인터페이스는 편의상 한군데 적어놨다.) package c..
디자인 패턴 2 - Singleton pattern Singleton pattern은 어떠한 클래스(객체) 가 유일하게 1개만 존재 할 때 사용한다 이를 주로 사용하는 곳은 서로 자원을 공유 할 때 사용되는데 , 실물 세계에서는 프린터가 해당되며 , 실제 프로그래밍에서는 TCP Socket 통신에서 서버와 연결된 connect 객체에 주로 사용한다. package com.company.singleton; public class ClazzA { private SocketClient socketClient; public ClazzA(){ this.socketClient = SocketClient.getInstance(); }; public SocketClient getSocketClient(){ return this.socketClient; }; } pack..
디자인 패턴 1 - 디자인 패턴이란? 디자인 패턴 이란 ? 자주 사용하는 설계 패턴을 정형화 해서 이를 유형별로 가장 최적의 방법으로 개발을 할 수 있도록 정해둔 설계 알고리즘과 유사 하지만 , 명확하게 정답이 있는 형태는 아니며 , 프로젝트의 상황에 맞추어 적용 가능 하다 . Gof 디자인 패턴 소프트웨어를 설계 할 때는 기존에 경험이 매우 중요하다 . 그러나 모든 사람들이 다양한 경험을 가지고 있을 수는 없다 . 이러한 지식을 공유하기 위해 나온 것이 GOF(Gang of Four)의 디자인 패턴이다. 객체 지향 개념에 따른 설계 중 재사용할 경우 유용한 설꼐를 디자인 패턴으로 정리 해둔 것이다. Gof의 디자인 패턴은 총 23개이며 ,이를 잘 이해하고 활용한다면 , 경험이 부족하더라도 좋은 소프트웨어 설계가 가능하다. 디자인 패턴의 장..

반응형