본문 바로가기

분류 전체보기

(35)
Builder 패턴 생성자를 만들때 변수 초기화를 생성자 파라미터에서 하는게 아니라 각 변수이름의 함수를 이요해 구조적으로 초기화 하는 디자인 패턴 1. 코드 MyClass : bulider 패턴을 이용해 생성하는 객체 public class MyClass { private int a; private String b; private float c; public static class Builder { private int a; private String b; private float c; public Builder(int a) { this.a = a; } public Builder b(String b) { this.b = b; return this; } public Builder c(float c) { this.c = c;..
Prototpye 패턴 객체를 new가 아닌 clone을 이용해 복사해오는 패턴 1. 코드 MessageBox : 복제할 class public class MessageBox implements Cloneable{ private char decochar; public MessageBox(char decochar) { this.decochar = decochar; } public void use(String s) { System.out.println(decochar + s + decochar); } public MessageBox createClone() { MessageBox result = null;; try { result = (MessageBox)clone(); } catch (CloneNotSupportedExcepti..
Singleton 패턴 객체를 하나만 만드는 패턴 1. 코드 TicketMaker : 티켓을 만드는 싱글턴 클래스 public class TicketMaker { private static TicketMaker tichetMaker = new TicketMaker(); private int ticket = 1; private TicketMaker() { } public static TicketMaker getInstance() { return tichetMaker; } public synchronized int getTichek() { return ticket++; } } Main : test 클래스 public class Main { public static void main(String[] args) { TicketMake..
Factory Method 패턴 객체를 Factory클래스에서 Template Method패턴을 이용하여 만드는 패턴 1. 코드 MyAbstractFactory : 객체 생성 실행 흐름을 기술한 상위 클래스 public abstract class MyAbstractFactory { public final Product create(String owner) { Product product = createProduct(owner); registerProduct(product); return product; } protected abstract Product createProduct(String owner); protected abstract void registerProduct(Product product); } MyFactory : 실제..
Template Method 패턴 상위 클래스에서 로직의 흐름을 정의, 하위 클래스에서 흐름에 쓰이는 method를 구현하는 패턴 1. 코드 AbstractDisplay : 로직의 흐름을 기술한 상위 클래스 public abstract class AbstractDisplay { public abstract void open(); public abstract void print(); public abstract void close(); public final void display() { open(); for (int i = 0; i
Adapter 패턴 두 클래스가 서로 동일한 기능을 하지만 규격이 다를 경우 두 클래스의 규격을 맞춰주는 adapter을 만들어주는 패턴 a_v1 adapter a_v2 1. 코드 MyClass : Properties 클래스의 규격을 맞춰주는 adpator 역할 public class MyClass extends Properties { public void readFromFile(String filename) throws IOException { File file = new File(filename); super.load(new FileInputStream(file)); } public void writeToFile(String filename) throws IOException { File file = new File(f..
iterator 패턴 반복하는 로직을 for문이 아닌 method를 이용해 구현하는 패턴 1. 예제 코드 MyClass : 반복을 돌려야하는 class public class MyClass { private List sentents; public List getSentents() {return sentents;} public void setSentents(List sentents) {this.sentents = sentents;} public String getSentent(int idx) {return sentents.get(idx);} public void appned(String str) { if (sentents == null) { sentents = new ArrayList(); } sentents.add(str);..
nignx 특징 - 가벼움과 높은 성능을 최선으로 고려한 웹서버 - 웹서버, 리버스 프록시, 메일 프록시 기능을 가지고 있음 - 요청에 응답하기 위해 비동기 이벤트 기반 구조를 가지고 있음 (아파치는 스레드/프로세스 기반) - 요청이 들어올 시 프로세스를 fork하거나 쓰레드를 사용하는게 아니라 모든 io를 전부 event listener로 미룸 - 흐름이 끊기지 않고 응답이 빠름. - 또한 fork하지 않기 때문에 메모리도 적게 사용 - 동시접속 처리에 특화 (동접 700명 이상부터 고려하면 좋음) - 규모가 작은 서비스이면서 정적 데이터 처리가 많은 서비스에 적합