일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Spring XD
- Spring Batch
- spark
- Clean Code
- hadoop
- elasticsearch
- Spring Boot
- 스프링 배치
- nginx
- DDD
- hdfs
- Hbase
- 인텔리J
- Linux
- intellij
- 엘라스틱서치
- Angular2
- Spring
- docker
- hibernate
- SBT
- 제주
- 도메인주도설계
- design pattern
- apache storm
- elastic search
- Storm
- Java
- scala
- Today
- Total
목록Methdology/Design Pattern (24)
욱'S 노트
When Using It Heavy한 Job이 수행되는 클래스들을 미리 만들어 놓고 공유하고 싶을때 Class Diagram Sample Code public interface Aggregate { } public interface Iterator { public Object next(); public boolean hasNext(); } public class ConcreteAggregate implements Aggregate { private Object[] items; public Iterator iterator() { return new ConcreteIterator(this); } public Object getItem(int index) { if ( index < items.length ..
When Using It Heavy한 Job이 수행되는 클래스들을 미리 만들어 놓고 공유하고 싶을때 Class Diagram Sample Code public interface Flyweight { public void Operation(); } public class ConcreteFlyweight implements Flyweight { @Override public void Operation() { System.out.println("A"); } } public class FlyweightFactory { Map pool = new HashMap(); public FlyweightFactory() { pool.put("A",new ConcreteFlyweight()); } public Flywe..
When Using It Lazy Init 등 실제 사용이나 필요로하는 시점에 작업을 수행한다. Class Diagram Sample Code public interface Subject { public void request(); } public class RealSubject implements Subject { @Override public void request() { System.out.println("실제수행"); } } public class Proxy implements Subject { private RealSubject realSubject; @Override public void request() { realSubject.request(); } } Caution 특별한 주의사항은 ..
When Using It 재귀적인 계층구조를 만들고 싶을때 Class Diagram Sample Code public abstract class Component { public abstract void operation(); public abstract void add(Component component); public abstract void remove(Component component); } public class Leaf extends Component { @Override public void operation() { System.out.println(this.toString()); } @Override public void add(Component component) { throw ne..
When Using It 객체의 본질적인 정보와 실제 보여지는 기능을 분리하고 싶을때 Class Diagram Sample Code public class Abstraction { private Implementor implementor; public Abstraction(Implementor implementor) { this.implementor = implementor; } public void operation() { implementor.operationImpl(); } } public class RefinedAbstraction extends Abstraction { public RefinedAbstraction(Implementor implementor) { super(implemento..
When Using It 객체의 본질적인 정보와 실제 보여지는 기능을 분리하고 싶을때 Class Diagram Sample Code public abstract class Component { public abstract String operation(); } public class ConcreteComponent extends Component { private String name; public ConcreteComponent(String name) { this.name = name; } @Override public String operation() { return this.name; } } public abstract class Decorator extends Component { protec..
When Using It 레이어간 티어간의 연결시 공통되는 창구가 필요할 때 Class Diagram Sample Code public class Facade { public void execute() { SubClass subClass = new SubClass(); subClass.execute(); } } public class SubClass { public void execute() { } } Caution 특별한 이슈사항은 없다.
When Using It 각각의 세부적인 기능은 감추고 공통적인 형태로 사용하고 싶을때 Class Diagram Sample Code public class Adaptee { public void specificRequest() { } } public interface Target { public void request(); } public class Adapter implements Target { private Adaptee adaptee; public Adapter() { this.adaptee = new Adaptee(); } @Override public void request() { adaptee.specificRequest(); } } Caution Target과 Adaptee가 성격이 ..
When Using It 생성이 복잡한 부품들을 제조하는 공장 자체를 만들어 제공하고 싶을때 Class Diagram Sample Code public interface Prototype { public Object clone(); } public class ConcretePrototype implements Prototype { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override protected Object clone() throws CloneNotSupportedException { ConcretePrototype prot..
When Using It 생성이 복잡한 부품들을 제조하는 공장 자체를 만들어 제공하고 싶을때 Class Diagram Sample Code public class AbstractProduct { } public class ConcreteProduct extends AbstractProduct { } public class ConcreteProduct2 extends AbstractProduct { } public abstract class AbstractFactory { public AbstractFactory getFactory(String name) { if (name.equals("A")) { return new ConcreteFactory(); } else { return null; } } p..