728x90
반응형

java 21

[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

Thread 하드디스크에 있는 '프로그램'이 실행되어 메모리에 올라가면 '프로세스'가 됩니다. CPU는 프로세스를 처리합니다. 프로세스를 처리할 때 CPU의 실행 단위는 쓰레드입니다. 즉 쓰레드가 CPU를 차지하면 프로세스가 수행됩니다. 쓰레드는 각자의 작업공간인 Context 값을 가집니다. 각 쓰레드들이 공유해서 사용하는 Shared Resource가 있습니다. 각 쓰레드들이 동시에 Shared Resource에 접근할 때 문제가 생길 수 있습니다. 그래서 공유 자원은 임계영역(critical section) 이라고 하는데 이 영역을 한 쓰레드가 사용할 때 다른 쓰레드는 못쓰게 합니다. 이를 동기화라고 합니다. 자바에서는 syncronized, syncronizedBlock이 있다. 쓰레드 상태 Ru..

JAVA 2022.07.29

[Java] Decorator Pattern

Decorator Pattern 기존 클래스는 유지하되, 이후 필요한 형태로 꾸밀 때 사용합니다. 객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있습니다. OCP와 DIP를 따릅니다. Decorator Pattern Ex 커피 클래스 원두 종류: Etiopia, Kenya 커피 종류: Americano, Latte, Mocha, WhippingCream 원두 종류를 선택하고 커피 종류를 추가하여 새로운 커피를 만들 수 있습니다. 예를 들면 에티오피아 원두의 라떼, 케냐 원두의 모카에 휘핑크림을 올린다던지 확장하여 다양한 커피를 생성할 수 있습니다. Coffee.java package Java.decoratorPattern; //추상 클래스로 커피 정의 public abstract class Co..

JAVA 2022.07.28

[Java] Template Method Pattern

Template Method Pattern 전체 작업의 시나리오를 정의하여 하위 클래스에서 그 시나리오가 바뀌지 않도록 할 수 있습니다. 즉 전체 일을 수행하는 구조는 바뀌지 않고 특정 단계에서 수행하는 작업은 하위 클래스에서 정의할 수 있도록 합니다. 동일한 기능을 상위 클래스에서 정의하면서 확장/ 변화가 필요한 부분만 서브 클래스에서 구현하도록 할 수 있다는 장점이 있습니다. Template Method Patter 구현 [Computer Class] package Java.templateMethodEx; public abstract class Computer { //하위 클래스에서 재정의 해야할 추상 메서드 public abstract void setting(); public abstract voi..

JAVA 2022.07.28

[Java] Singleton Pattern

Singleton 싱글톤 객체가 유일하게 1개만 존재해야할 때 사용하는 패턴으로, 하나의 인스턴스만 생성하여 공유해서 사용합니다. 그래서 메모리의 낭비를 줄일 수 있습니다. 스프링에서는 @Bean을 싱글톤으로 관리합니다. Singleton Pattern 구현 package Java; public class Singleton { //인스턴스를 하나만 사용하기 위해 인스턴스 미리 생성 private static Singleton singleton = new Singleton(); //인스턴스를 생성하지 못하게 생성자를 private로 막는다. private Singleton(){} public static Singleton getInstance(){ //기존에 인스턴스가 생성되지 않은 상태라면 생성하기 if..

JAVA 2022.07.28
728x90
반응형