본문 바로가기

언어99

데코레이터 패턴 데코레이터 패턴은 기존 뼈대(클래스)는 유지하되, 이후 필요한 형태로 꾸밀 때 사용한다. 확장이 필요한 경우 상속의 대안으로도 활용 한다. SOLID중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다. package com.company.design.decorator; public interface ICar { int getPrice(); void showPrice(); } package com.company.design.decorator; public class Audi implements ICar{ private int price; public Audi(int price){ this.price = price; } @Override public int getPrice() { return .. 2021. 6. 6.
Proxy pattern Proxy는 대리인이라는 뜻으로, 뭔가를 대신해서 처리하는 것 Proxy Class를 통해서 대신 전달하는 형태로 설계되며, 실제 Client는 Proxy로 부터 결과를 받는다. Cache의 기능으로도 활용이 가능하다. SOLID중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다. package com.company.design.proxy; public interface IBrowser { HTML show(); } package com.company.design.proxy; public class HTML { private String url; public HTML(String url){ this.url = url; } } package com.company.design.proxy; pu.. 2021. 6. 6.
Adapter pattern 어뎁터 패턴은 실생활에서는 110v를 220v로 변경해주거나, 그 반대로 해주는 흔히 돼지코 라고 불리는 변환기를 예로 들 수 있다. 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용 할 수 있도록 한다. SOLID중에서 개방폐쇄 원칙 (OCP)를 따른다. package com.company.design.adapter; public interface Electronic110v { void powerOn(); } package com.company.design.adapter; public interface Electronic220v { void connect(); } package com.company.design.adapter; public class SocketAdapter implements .. 2021. 6. 6.
POJO JAVA POJO JAVA POJO(Plain Old Java Object) 순수한 자바 오브젝트를 뜻한다. POJO 특징 1. 특정 규약에 종속 되지 않는다. 특정 Library, Module에서 정의된 클래스를 상속 받아서 구현하지 않아도 된다. POJO가 되기 위해서는 외부의 의존성을 두지 않고, 순수한 JAVA로 구성이 가능해야 한다. 2. 특정 환경에 종속되지 않는다. 만일 특정 비즈니스 로직을 처리 하는 부분에 외부 종속적인 http request, session 등 POJO를 위배한 것으로 간주한다. 또한 많이 사용하고는 있지만 @Annotation 기반으로 설정하는 부분도 엄연히는 POJO라고 볼 수는 없다. 2021. 6. 6.
객체지향 설계 5원칙 SOLID 응집도와 결합도 좋은 소프트웨서 설계를 위해서는 결합도(coupling)는 낮추고 응집도(cohesion)는 높여야 한다. 결합도 모듈(클래스)간의 상호 의존 정도를 나타내는 지표로서 결합도가 낮으면 모듈간의 상호 의존성이 줄어들어서 객체의 재사용 및 유지보수가 유리하다. 응집도 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로 응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아져, 재사용 및 유지보수가 용이하다. OCP (Open Closed Principle) 개방 폐쇄 원칙 자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다. 상위 클래스 또는 인터페이스를 중간에 둠으로써, 자신은 변화에 대해서는 폐쇄적이지만, 인터페이스는 외부의 변화에 대해서 확장을 개방해 줄 .. 2021. 6. 6.
알고리즘 7 피보나치 수열 문제 여러 방식으로 해결하기 피보나치 수열: n번째 숫자와 n1번째 숫자를 더한 값이 n2번째 숫자로 나타내는 수열 재귀함수로 풀이 public int fibonacciRecur(int n) { if (n == 0) return 0; if (n == 1) return 1; return fibonacciRecur(n - 1) + fibonacciRecur(n - 2); } 반복문으로 풀이 public int fibonacciIter(int n) { int ppre = 0; int pre = 1; int current = 0; if (n == 0) return 0; if (n == 1) return 1; for (int i = 2; i 2021. 5. 30.