일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Gradle
- db
- Git
- jenkins
- Oracle
- tool
- linux
- 맛집
- elasticsearch
- Spring
- laravel
- php
- it
- AWS
- Spring Batch
- jsp
- MySQL
- redis
- IntelliJ
- springboot
- Spring Boot
- Design Patterns
- ReactJS
- JVM
- java
- Web Server
- javascript
- devops
- 요리
- ubuntu
- Today
- Total
목록Design Pattern (4)
아무거나
템플릿 메소드 패턴(Template Method Pattern) 알고리즘의 구조를 메소드에 정의 하고 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재 정의하는 패턴 사용 구현하려는 알고리즘이 일정한 프로세스가 있다. 구현하려는 알고리즘이 변경 가능성이 있다. 단계 알고리즘을 여러 단계로 나눔 ( Abastract Class ) 나눠진 알고리즘의 단계를 메소드로 선언 ( Abastract Class의 operation1() ~ 3() ) 알고리즘을 수행할 템플릿 메소드를 만듬 ( Abastract Class의 templateMethod() ) 하위 클래스에서 나눠진 메소드들을 구현 ( ConcreteClass ) 템플릿 메소드 패턴 예시 - 1 신작 게임의 접속을 구현 requestConnectio..
Strategy Pattern 개념 Strategy Pattern이란 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. Strategy를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 즉, 동적으로 알고리즘을 교체할 수 있는 구조를 말한다. 먼저 Duck이라는 슈퍼클래스와 각각의 오리별 클래스인 MallardDuck, RedheadDuck를 구현해보자. 위의 구조를 설명하자면 Duck 클래스에선 모든 오리들이 소리를 내고 헤엄을 칠 수 있어 quack(), swim() 메소드를 구현했고 오리들의 모양이 각각 다르기 때문에 display() 메소드는 추상 메소드이다. 그 외에도 다른 유형의 오리들이 Duck 클래스로부터 상속을 받는다. 여기서 만..
[스트레티지 패턴] 스트레티지 패턴(Strategy Pattern) 어떤 객체를 만들 때 객체가 가지는 기능들이 다양하게 존재할 것 입니다. 이러한 기능들을 추상화 하여 언제든지 적용할 수 있게 만드는 것 입니다. 즉, 기능을 부품화 하는 것 입니다. 예를 들어 포니와 그랜저 자동차가 있습니다. 포니에 들어가는 기어 연결부분과 그랜저에 들어가는 연결부분이 동일하다고(추상화) 하면, 저급기어, 중급기어, 고급기어를 만들어 두고 상황에 따라서 적당한 기어를 적용할 수 있다. 즉 포니에는 저급기어를, 그랜저에는 고급기어를 적용하는것이다. 이렇게 기능을 부품화하여 구조를 만드는 것을 스트레티지라고 생각하면 된다. 아래 예제로 로봇을 프로그램으로 만들어 보는 것이다. [시나리오] 1. 로봇 모양은 팔, 다리, 머..
[싱글턴 패턴] 싱글턴 패턴(Singleton Pattern)이란 어떤 클래스의 인스턴스는 오직 하나임을 보장하며, 이 인스턴스에 접근할 수 있는 전역적인 접촉점을 제공하는 패턴 지금까지의 클래스를 잘 생각해 보면, 클래스를 하나 만들고, 만들어진 클래스로부터 객체를 여러 개 생성하여 사용하였습니다. 하지만 싱글턴 패턴을 이용하면, 클래스 하나에 객체를 유일하게 하나만 생성하여 모든 곳에서 하나의 객체에만 접근할 수 있습니다. 즉 전역의 개념으로 객체를 사용할 수 있다. ** static이나 클래스가 선언되는 위치를 데이터 영역이라하고 그 클래스들이 생성한 객체들이 위치하는 영역을 heap영역 이라한다. 예제로 소스파일을 실행시켜 확인하자. [MainClass.java] public class MainC..