본문 바로가기

이론70

[디자인패턴] 데코레이터 패턴 Decorator Pattern 📌 Decorator pattern 기존 뼈대(클래스)는 유지하되, 이후 필요한 형태로 꾸밀 때 사용한다. 확장이 필요한 경우 상속의 대안으로도 활용한다. SOLOD 중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다. 에스프레소에 추가되는 우유, 물, 시럽 처럼 어떤걸 첨가하냐에 따라서 다른 무엇이 되는 원리와 비슷하다. 이 예로 알아보기 https://github.com/6161990/TIL/blob/main/DesignPattern/Decorator%20Pattern.md Audi의 모델들을 예로 들어보자 ICar 인터페이스를 만들고 Audi가 그것을 구현하고 Main에서 돌려보면 다음과 같은 결과가 나온다. 여기에서 Audi 모델들을 다양하게 추가해보자면, 우선 데코레이터 클래스를 .. 2021. 6. 6.
[디자인 패턴] 프록시 패턴 Proxy Pattern 📌 Proxy Pattern Proxy는 대리인이라는 뜻으로써, 뭔가를 대신해서 처리하는 의미이다. Proxy Pattern 에서는 Proxy class를 통해서 대신 전달하는 형태 로 설계되며, 실제 Client는 Proxy로 부터 결과를 받는다. Proxy Pattern을 Cache 기능으로 활용한 예를 살펴보자. Proxy Pattern 을 거치치 않으면 브라우저에서 요청을 할 때마다 새롭게 로딩을 해야한다. 이때 로딩해온 값을 저장 해 놓으면 좋은데, 그 역할을 Proxy 로 해줄 수 있다. BrowserProxy loading html from : www.naver.com BrowserProxy use cache : www.naver.com 스프링에서는 AOP가 이 패턴을 따르고 있다. AOP는.. 2021. 6. 4.
[디자인패턴] 어뎁터 패턴 Adapter Pattern 📌 어뎁터 패턴 Adapter Pattern Adapter Pattern 에서는 실생활에서 많이 쓰이는 어뎁터를 떠올리면 된다. 흔히 돼지코라고 불리는데 100v를 200v로 변경해주거나, 그 반대로 해주는 변환기를 뜻한다. 📍 어뎁터 패턴의 원칙호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용 할 수 있도록 한다. SOLID 중에서 개방 폐쇄 원칙OCP를 따른다. ❗ Main 클래스 12 HairDryer hairDryer = new HairDryer(); // 110v 구현 클래스 생성 connect(hairDryer); 15 Cleaner cleaner = new Cleaner(); 16 connect(cleaner); 오류가 뜬다. connect()은 매개변수로 Electronic110v만.. 2021. 6. 4.
[디자인 패턴] 싱글톤 패턴 Singleton pattern 📌 Singleton pattern 어떠한 클래스(객체)가 유일하게 1개만 존재(해야)할 때 사용한다. 서로 자원을 공유할 때 사용하는데, 실물 세계에서는 프린터(여러 대의 컴퓨터가 하나의 프린터를 가지고 공유해 사용)가 해당되며, 실제 프로그래밍에서는 TCP Socket 통신에서 서버와 연결된 connect 객체(socket은 하나만 사용)에 주로 사용한다. 스프링에서는 Bean이 있다. 어떠한 서버와 통신한다고 했을 때, 때마다 연결하는 것이 아닌 한번 통로를 연결해놓고 사용한다. 7 싱글톤은 자기 자신의 객체 를가지고 있어야하며, 9 기본(디폴트) 생성자를 기본 생성자로 생성할 수 없도록 private 으로 막아놔야 한다. 13 static 을 이용해 getInstance()를 만들어놓고, 14 자.. 2021. 6. 4.
[디자인패턴] Design Pattern 의 효용과 종류 📌 Design Pattern 의 효용 자주 사용하는 설계 패턴을 정형화해서 이를 유형별로 가장 최적의 방법으로 개발을 할 수 있도록 정해둔 설계. 알고리즘과 유사하지만, 명확하게 정답이 있는 형태는 아니며, 프로젝트의 상황에 맞추어 적용 가능하다. A식으로 로직을 구성하면 템플릿 메소드 패턴. B식으로 로직을 구성하면 옵저버 메소드 패턴. : 해결하려는 문제가 무엇이느냐에 따라서 그에 적당한 구조를 선택해 사용한다. 📍 Gof 디자인 패턴 소프트웨어를 설계 할 때는 기존의 경험이 매우 중요하다. 사람들이 개발을 하면서 축적되온 지식와 패턴들을 공유하기 위해서 나온 것이 Gang of Four 의 디자인 패턴이다. 객체지향 개념에 따른 설계 중 재사용할 경우 유용한 설계를 디자인 패턴으로 정리해 둔 것이.. 2021. 6. 4.
[JAVA] 객체지향 5대원칙 / POJO JAVA 📌 SRP Single Responsibility Principle 단일 책임 원칙 클래스는 하나의 일에만 책임진다. 즉, 1개의 클래스에 하나의 역할만 가져야한다. 설계중인 프로그래밍에 클래스가 여러가지 역할을 가지고 있다면 검토 후, 불필요한 필드나 메소드를 제거해야한다. 예를들어 FileReader(String str)로 쓰이다가 -> FileReader(File file)로 매개변수 객체를 바꾸면 외부에서 쓰이고있던 FileReader는 변경이되었기때문에, FTP Client와 FileReader 또한 수정해줘야한다. . . 이 밖에도, FTP Client는 너무 많은 기능을 가지고 있다. 각각을 분리시킬 필요가 있다. 그렇게 되면 다른 새로운 모듈 (Local File Reader, HttpCl.. 2021. 6. 3.