일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- linux
- jenkins
- javascript
- Design Patterns
- laravel
- redis
- Gradle
- JPA
- Spring Boot
- db
- jsp
- ubuntu
- elasticsearch
- MySQL
- docker
- ReactJS
- java
- devops
- AWS
- php
- Oracle
- Spring
- 맛집
- 요리
- Web Server
- springboot
- it
- IntelliJ
- tool
- Git
- Today
- Total
목록2019/12/07 (5)
아무거나
싱글톤 패턴(Singleton Pattern) 하나의 인스턴스만 생성하도록 구현 즉, 인스턴스를 하나만 생성해야할 객체를 위한 패턴 싱글톤 패턴 예시 - 1 [요구사항] 개발중인 시스템에서 스피커에 접근할 수 있는 클래스를 만들자. 만약 스피커에 접근할 수 있는 클래스가 하나 이상 예를 들어 100개라고 생각하면 스피커의 볼륨을 올린다면 100개의 클래스를 모두 찾아다니면서 올려줘야 하므로 개발의 복잡도도 올라가고 리소스도 많이 잡아먹는다 그러므로 싱글톤을 사용해야 한다. 스피커에 대한 싱글톤 패턴을 구현하자. [SystemSpeaker.java] package com.bkjeon.singleton; public class SystemSpeaker { // 외부에 접근 안되고 하나만 하기 위해서 stat..
팩토리 메소드 패턴(Factory Method Pattern) 팩토리 메소드 패턴에서 템플릿 메소드 패턴의 사용됨을 알 수 있다. 팩토리 메소드 패턴에서의 구조와 구현의 분리를 이해하고 구조와 구현의 분리의 장점을 안다. 이번 내용은 먼저 코드를 작성하고 구조를 알아야 위의 본문을 이해하기 쉽다. 팩토리 메소드 패턴 예시 - 1 [요구사항] 게임 아이템과 아이템 생성을 구현 아이템을 생성하기 전에 데이터 베이스에서 아이템 정보를 요청 아이템을 생성 후 아이템 복제 등의 불법을 방지하기 위해 데이터 베이스에 아이템 생성 정보를 저장 아이템을 생성하는 주체를 ItemCreator로 이름 정의 아이템은 item 이라는 interface로 다룰 수 있게 한다. item은 use 함수를 기본 함수로 갖고 있다. ..
템플릿 메소드 패턴(Template Method Pattern) 알고리즘의 구조를 메소드에 정의 하고 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재 정의하는 패턴 사용 구현하려는 알고리즘이 일정한 프로세스가 있다. 구현하려는 알고리즘이 변경 가능성이 있다. 단계 알고리즘을 여러 단계로 나눔 ( Abastract Class ) 나눠진 알고리즘의 단계를 메소드로 선언 ( Abastract Class의 operation1() ~ 3() ) 알고리즘을 수행할 템플릿 메소드를 만듬 ( Abastract Class의 templateMethod() ) 하위 클래스에서 나눠진 메소드들을 구현 ( ConcreteClass ) 템플릿 메소드 패턴 예시 - 1 신작 게임의 접속을 구현 requestConnectio..
스트래티지 패턴(Strategy Pattern) 여러 알고리즘을 하나의 추상적인 접근점을 만들어 접근 점에서 서로 교환 가능하도록 하는 패턴 스트래티지 패턴 예시 [요구사항] 신작 게임에서 캐릭터와 무기를 구현해보자. 무기는 두 가지 종류가 있다. 칼 검 먼저 무기 인터페이스를 생성한다. [Weapon.java] package com.bkjeon.strategy; public interface Weapon { public void attack(); } 그 다음 칼과 검의 클래스를 생성한다. [Knife.java] package com.bkjeon.strategy; public class Knife implements Weapon { @Override public void attack() { System...
어댑터 패턴(Adapter Pattern) 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 어댑터 패턴은 이름대로 어댑터처럼 사용되는 패턴이다. 220V 를 사용하는 한국에서 쓰던 기기들을, 어댑터를 사용하면 110V 를 쓰는곳에 가서도 그대로 쓸 수 있다. 이처럼, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해주는 패턴이 어댑터 패턴이라고 할 수 있겠다. 이를 위해 어댑터 역할을 하는 클래스를 새로 만들어야 한다. 기존에 있는 시스템에 새로운 써드파티 라이브러리가 추가된다던지, 레거시 인터페이스를 새로운 인터페이스로 교체하는 경우에 코드의 재사..