일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹소켓
- PL/SQL
- 암호화
- express
- 블록체인
- Spring
- 도커
- AWS
- docker
- model1
- SQL
- RDS
- EC2
- 배포
- Cookie
- tiles.xml
- JavaScript
- autowired
- phaser
- CSS
- 웹게임
- 알고리즘
- 비트코인
- HTML
- Servlet
- websocket
- JSP
- jQuery
- Ajax
- node.js
- Today
- Total
목록IT_Fundamental/디자인 패턴 (9)
記錄
Abstract Factory Pattern(추상 팩토리 패턴) 추상 팩토리 패턴은 많은 수의 연관된 서브 클래스를 특정 그룹으로 묶어 한번에 교체할 수 있도록 만든 디자인 패턴입니다. 예를 들어 특정 라이브러리를 배포하는데 OS별로 지원하는 기능이 상이하다면 추상 팩토리 패턴을 사용해 OS별 기능 변경을 통합적으로 변경 할 수 있습니다.출처 : http://jdm.kr/blog/192 추상 팩토리 패턴(Abstract factory pattern)은 다양한 구성 요소 별로 '객체의 집합'을 생성해야 할 때 유용하다. 이 패턴을 사용하여 상황에 알맞은 객체를 생성할 수 있다.출처 : 위키 public interface Barrack { public Armor makearmor(); public Weapo..
Builder Pattern(빌더패턴) 복잡한 것을 만들 때는 전체를 한꺼번에 만들기보다는 작게 분리하여 만든 후 다시 합치는 것이 편리하다. builder 패턴은 복잡한 인스턴스를 조립하여 만드는 구조로, 복합 객체를 생성할 때 객체를 생성하는 방법(과정)과 객체를 구현(표현)하는 방법을 분리한다. 따라서 이 패턴은 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있다. Robotpackage BuilderPattern; public class Robot { String Head; String Body; String Leg; public Robot(String head, String body, String leg) { Head = head; Body = body; Leg = leg; } publi..
얕은 복사와 깊은 복사의 차이를 알아보자 얕은 복사로 인해 주소값이 공유 되고 결과적으로 수정을 원하지 않는 객체까지 수정이 되어버림 주소값이 같은 것을 확인 할 수 있다 깊은 복사로 제대로된 결과가 출력됨 package Prototype; public class Cat implements Cloneable { private String name; private int age; public Cat(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public in..
Prototype Pattern(프로토 타입 패턴) 프로그램 코드를 작성하다보면 기존에 만들어진 인스턴스의 내용을 일부 수정하여 사용하고 싶을 때가 있다. 그런 경우 객체를 새로 생성할 때는 사용하는 new Object() 메서드보다 [그림 5-31]처럼 clone() 메서드를 이용해 기존의 것을 복사하여 일부만 바꿔 인스턴스를 생성할 수 있다. 이런 개념을 확장하여 처음부터 일반적인 prototype(원형)을 만들어놓고, 그것을 복사한 후 필요한 부분만 수정하면 new Object() 메서드로 객체를 생성하는 것보다 편리하다. [네이버 지식백과] prototype 패턴 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 한빛아카데미(주)) package Prototype; public class..
Singleton Pattern(싱글톤 패턴) 특정 클래스의 객체가 오직 한 개만 존재하도록 보장하는 패턴이다. public class SystemSpeaker { static private SystemSpeaker instance; // 외부에서 호출 안되고 하나만 있게 하기 위해서 // private이 있고 static이 있는 것 private int volume; private SystemSpeaker() { volume = 5; }; public static SystemSpeaker getInstance() { // 객체 생성 없이 getInstance를 사용하기 위해서 // 마찬가지로 static이 들어간다 if (instance == null) { instance = new SystemSpea..
Factory Method Pattern(팩토리 메소드) Factory Method Pattern(팩토리 메소드 패턴)은 템플릿 메소드 패턴을 이용한 패턴으로 구조와 구현을 분리함으로써 코드의 유연성을 얻고자 하는 패턴이다. 템플릿 메소드 패턴에서 한 단계 발전한 형태라고 보면 된다. 추상 클래스 혹은 인터페이스를 통해서 구조만 선언해두고 이를 상속하는 클래스를 통해서 각각 Override한 후 Main에서 사용하는 방식이다. public interface Item { public void use();} public class HPportion implements Item { public void use() { System.out.println("HP 포션을 사용합니다"); } } public class..
Template Method Pattern(탬플릿 메소드 패턴) Template Method Pattern(탬플릿 메소드 패턴)이란 알고리즘을 절차적 단위로 구분하여 단계별로 메소드화 하고 이를 상속하는 자식 클래스가 필요한 형태로 오버라이드해서 사용하는 패턴을 의미한다. 탬플릿 메소드를 사용하는 이유는 1. 반복되는 작업이 진행될 때 효율적으로 작업이 가능2. 기능별로 잘 나누어져 있기 때문에 유지, 보수가 편리 이렇게 크게 두 가지로 볼 수 있는 것 같다. 간단히 말해서 일정한 프로세스를 가진 요구사항을 프로그래밍으로 구현한다면 차후 있을 수도 있는 유지, 보수사항을 감안하여 Template Method Pattern(탬플릿 메소드 패턴)을 활용해서 짜는 것이 좋겠다. abstract class Ab..
Adapter Pattern(어댑터 패턴) 이미 구현되어 있는 알고리즘을 사용하고 싶지만 반환하는 자료타입이 다를때 이를 해결해주는 패턴이다. 마치 여행가서 쓰는 어댑터처럼 전기를 쓰긴 쓰는데 전압만 바꿔주는 그런 어댑터와 같은 기능이다.원리는 매우 간단하다. 인터페이스에서 필요한 메소드를 선언 후 이를 implements 하는 객체에서 구현한다. 그리고 구현은 기존에 있던 객체의 메소드를 불러와 그곳에서 파라미터에 '.doubleValue()'와 같은 메소드를 활용해서 제대로 된 타입을 집어 넣고 리턴에 강제로 (float)을 캐스팅 해서 결국 우겨넣는(?) 메소드를 하나로 정리하는 것이다. 그리고 이를 Main Class(메인이든 아니든 필요한 곳에서)에서 불러내어 사용하면 되고 이 때 집어넣는 파라..
strategy pattern(스트래티지 패턴) 여러 알고리즘을 하나의 추상적인 접근점(인터페이스)을 만들어이 접근점에서 서로 교환가능하도록 하는 패턴알고리즘을 정의하고 각각을 캡슐화하여 교환해서 사용가능 하도록 하는 패턴출처: http://sycho-lego.tistory.com/6 ---------------------------------------------------------------------------------------------------------------------내가 원하던 것이 이런 것이었다. 디자인 패턴 공부를 시작하길 잘 했다는 생각이 든다. 계속 배워나가면 실력이 많이 늘 것 같다. 꾸준히 기록해 나갈 것이다. 처음으로 배운 것은 스트래티지 패턴이다. 게임 캐릭터가 무..