728x90
반응형

JAVA 27

[Java] Facade Pattern

Facade Pattern Facade는 건물의 안쪽 정면이라는 뜻으로, 여러 개의 객체와 실제 사용하는 서브 객체 사이에 복잡한 의존관계가 있을 때, 중간에 Facade라는 객체를 두고, 여기서 제공하는 interface만을 활용하여 기능을 사용하는 방식입니다. Facade Pattern 적용 전 [Ftp class] package Java.facadePattern; public class Ftp { private String host; private int port; private String path; public Ftp(String host, int port, String path) { this.host = host; this.port = port; this.path = path; } public..

JAVA 2022.08.01

[Java] Observer Pattern

Observer Pattern 감시자로써 역할을 합니다. 객체를 감시하다가 이벤트나, 변화가 일어 났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것입니다. 이 패턴은 Event Listener에서 많이 사용하고 있습니다. Observer Pattern 구현 [ButtonListener interface] package Java.observerPattern; public interface ButtonListener { void clickEvent(String event); } ButtonListener를 만들어서 clickEvent가 생길 때 event를 어떻게 처리할지에 대한 메서드를 정의하였고, Main 메서드에서 clickEvent를 구현할 것입니다. [Button class] pac..

JAVA 2022.08.01

[Java] Decorator Pattern - Example Car

Decorator Pattern 의 다른 예제 기존의 포스팅했던 Decorator Pattern입니다. 개념이나 다른 예제를 원하시는 분은 참고하시면 좋을 것 같습니다. [Java] Decorator Pattern Decorator Pattern 기존 클래스는 유지하되, 이후 필요한 형태로 꾸밀 때 사용합니다. 객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있습니다. OCP와 DIP를 따릅니다. Decorator Pattern Ex 커피 lakelight.tistory.com Decorator Pattern Car Example [Car interface] package Java.decoratorEx; public interface Car { int getPrice(); void showPric..

JAVA 2022.08.01

[Java] Proxy Pattern - AOP

AOP (Aspect Oriented Programming) 관점 지향 프로그래밍 즉, 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 하겠다는 의미 입니다. Proxy Pattern을 활용한 AOP 구현 [Browser interface] package Java.proxy; public interface Browser { HTML show() throws InterruptedException; } [HTML class] package Java.proxy; public class HTML { private String url; public HTML(String url) { this.url = url; } } [AopBrowser class] packa..

JAVA 2022.07.31

[Java] Proxy Pattern

Proxy Pattern 대리인 이라는 뜻으로, 대신해서 처리하는 것을 말합니다. Proxy Class를 통해서 대신 전달하는 형태로 설계되며, 실제 Client는 Proxy로 부터 결과를 받습니다. 또한 Cache의 기능으로도 활용이 가능합니다. OCP와 DIP를 따릅니다. Proxy Pattern 으로 캐싱 구현 [Browser interface] package Java.proxy; public interface Browser { HTML show(); } [Chrome class] package Java.proxy; public class Chrome implements Browser{ private String url; public Chrome(String url) { this.url = url;..

JAVA 2022.07.31

[Java] Adapter Pattern

Adapter Pattern 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용할 수 있도록 합니다. OCP를 따릅니다. Adapter Pattern 예제 (220v -> 110v) [Electronic110V interface] package Java.adapterPattern; public interface Electronic110V { //전원을 공급한다. void powerOn(); } [Electronic220V interface] package Java.adapterPattern; public interface Electronic220V { //전원을 공급한다. void powerOn(); } [Macbook class implement 110V] package Java.adapterPa..

JAVA 2022.07.31

[Java] Thread Synchronization

Thread Synchronization 두 개의 쓰레드가 동일한 객체에 접근을 하려고 할 때 공유 자원을 lock하여 다른 쓰레드가 접근하지 못하게 합니다. 그래서 두 개의 쓰레드가 공유자원에 동시에 접근하여 발생하는 문제를 없앨 수 있습니다. Thread Synchronization Problem package Java.thread.syncronizedEx; import static java.lang.Thread.sleep; class Bank{ private int money = 10_000; public void saveMoney(int save){ int curMoney = getMoney(); try { sleep(3000); } catch (InterruptedException e) { th..

JAVA 2022.07.29

[Java] Thread Method : join()

Join() Method 쓰레드가 실행될 때 쓰레드가 종료될 때까지 기다린 후 다른 쓰레드를 실행시키거나 메인 함수를 실행해야하는 경우가 있습니다. 이때 Thread.join()을 사용해서 해당 쓰레드가 종료 될 때까지 Non-Runnable 상태로 만들 수 있습니다. Join() 구현 package Java.thread; public class ThreadJoinTest extends Thread{ int start; int end; int total; //멤버변수는 초기화하지 않아도 0으로 자동 초기화됩니다. public ThreadJoinTest(int start, int end) { this.start = start; this.end = end; } public void run(){ //로직 fo..

JAVA 2022.07.29

[Java] Priority Thread

각각의 쓰레드의 우선순위를 정해서 실행시킬 수 있습니다. package Java.thread; //쓰레드 우선순위를 설정해주는 예제 class PriorityThread extends Thread{ @Override public void run(){ int sum = 0; //쓰레드 작업 시작 Thread thread = Thread.currentThread(); System.out.println(thread + " start !!"); //0~100_000까지 더하기 for (int i = 0; i < 100_000; i++) { sum += i; } //쓰레드 작업 종료 System.out.println(thread.getPriority() + " end !!"); } } public class Pr..

JAVA 2022.07.29
728x90
반응형