일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Hibernate
- 자바ORM표준JPA프로그래밍
- cartograhper
- Python
- 논문리뷰
- MySQL
- 딥러닝
- Java
- persistance context
- 포인트클라우드
- 논문
- 자료구조
- 파이썬
- Database
- 운영체제
- 디자인패턴
- 자바
- Spring Batch
- DeepLearning
- JPA
- Jetson
- 네트워크
- 배달로봇
- 프로그래머스
- 장애물인식
- 아두이노
- 영속성컨텍스트
- 이펙티브자바
- 자율주행
- 알고리즘
- Today
- Total
목록디자인 패턴 (6)
제리 devlog
프록시 패턴, 데코레이터 패턴이란? 두 가지 패턴 모두 프록시를 사용한다. 프록시는 실제를 대신해서 처리해주는 대리자 역할을 한다. 실제 객체와 프록시 객체는 동일한 인터페이스를 가져 클라이언트의 입장에서는 코드 변경 없이 동작할 수 있어야 한다. 대리자 역할을 수행하면서 얻는 이점은 다음과 같다. 접근 제어 권한에 따른 접근을 차단한다. 캐싱 로직을 적용한다. 지연 로딩이 가능하게 한다. 부가 기능 추가 원래 서버가 제공하는 기능을 더해서 부가 기능을 수행한다. ex) 값을 변경해서 전달, 실행 시간을 측정해서 로그를 남김 프록시 패턴과 데코레이터 패턴의 차이는 어떤 기능이 목적인지에 따라 정해진다. 프록시 패턴과 접근 제어의 목적, 데코레이터 패턴은 부가 기능 추가의 목적이 있다. 먼저, 실제 객체를..
전략 패턴 이란? 알고리즘 제품군을 정의하고 각각을 캡슐화하여 상호 교환 가능하게 만들자. 전략을 사용하면 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다. [GOF] 전략 패턴은 이전에 포스팅한 템플릿 메서드 패턴과 유사하다. 변하지 않는 부분과 변하는 부분이 분리되고 인터페이스를 통해 구현된다. 비즈니스 로직의 실행 시간을 측정하는 예시이다. 여기서 변하는 부분은 비즈니스 로직, 변하지 않는 부분은 실행 시간을 측정하는 부분이다. strategy는 변하는 알고리즘을 담당한다. fun interface Strategy { fun call() } context는 변하지 않는 부분을 의미한다. class Context(private val strategy: Strategy) { pri..
템플릿 메서드 패턴이란? 템플릿 메서드 디자인 패턴의 목적은 다음과 같습니다. > "작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기합니다. 템플릿 메서드를 사용하면 하위 클래스가 알고리즘의 구조를 변경하지 않고도 알고리즘의 특정 단계를 재정의할 수 있습니다." [GOF] 좋은 설계는 변하는 것과 변하지 않는 것을 분리하는 것이다. 템플릿 메서드 패턴은 알고리즘의 골격인 템플릿을 제공하고 하위 클래스에서는 알고리즘의 특정 단계를 정의한다. 알고리즘의 특정 단계를 하위 클래스에서 정의하면 알고리즘의 구조를 변경하지 않고 특정 단계를 재 정의할 수 있다. 템플릿 메서드 패턴은 상속을 활용하여 변하는 부분과 변하지 않는 부분을 분리해준다. 비즈니스 로직의 실행 시간을 측정하는 예시이다. 여기..
어댑터 패턴이란? 어댑터 패턴은 서로 다른 인터페이스를 어탭터로 연결하여 사용할 수 있게 해주는 패턴을 말한다. 어댑터 패턴이 어떤 상황에서 유용한지 확인해보자. public interface SamsungRemoteControl { void on(); void off(); } 삼성리모컨 인터페이스가 있다. public class SamsungRemoteControlImpl implements SamsungRemoteControl { @Override public void on() { System.out.println("on!"); } @Override public void off() { System.out.println("off!"); } } 삼성 리모컨은 위와 같이 동작한다. public class ..
싱글톤 패턴이란? 인스턴스를 매번 생성하지 않고 최초에 생성한 객체를 공유하여 사용하는 패턴이다. 인스턴스 한 개로 여러 요청을 처리할 수 있다면 메모리상에서 효율적이며 객체의 추가적인 생성이 없으므로 성능이 빠르다. 하지만 하나의 객체를 공유한다는 점에 있어서 thread safe여부를 주의해야한다. 일반적으로 싱글톤 패턴은 생성자를 private로 선언하여 new키워드로 객체의 생성을 막고 정적 팩터리 메서드형태로 인스턴스를 반환한다. 방법1. synchronized method public class RemoteControl { private static RemoteControl remoteControl; private RemoteControl() { } public static synchroniz..
커맨드 패턴이란? 간단히 말하자면 커맨드 패턴은 요청을 객체의 형태로 캡슐화하여 처리하는 방식이다. 일반적으로 객체는 메서드를 통해 행동을 정의하지만, 행동 자체를 객체로서 표현한다는 의미이다. 만약, 전등을 객체로 표현하고 전등이 켜지는 행위는 아래와 같이 표현된다. public class Light { public void on() { System.out.println("전등 켜짐"); } } 커맨드 패턴에 따라 on()동작 자체를 객체로서 정의하면 아래와 같은 코드가 된다. public interface Command { void execute(); } public class Light { public void on() { System.out.println("전등 켜짐"); } } public cl..