어댑터 패턴은 개방 폐쇄 원칙(Open/Closed Principle, OCP)을 활용한 패턴입니다.

OCP에 대해 먼저 이해하고 어댑터 패턴에 대해 다루겠습니다.

 


 

개방 폐쇄 원칙(Open/Closed Principle, OCP)

 

OCP는 자바 개발자라면 의식하지 않아도 항상 접할 수 있는 환경에 놓여져 있습니다.

 

자바 개발자는 코드를 작성할 때,

이 코드가 Window, MacOS, Linux 등 어느 운영체제에서 쓰일지 하나하나 고려하며 작성하는 개발자는 없습니다.

 

이러한 걱정을 덜어주는 이유는 JVM이라는 존재 덕분입니다.

 

JVM으로 인해 개발자는 내가 작성하는 소스코드가 어느 운영체제에 쓰일지 신경쓰지 않아도 되기 때문에 운영체제의 변화에 닫혀있다고 할 수 있습니다.

반면, JVM은 새로운 운영체제나 기존의 운영체제의 변화에 따라 업데이트됩니다. 이러한 특징은 JVM이 운영체제의 확장에 열려있다고 할 수 있습니다.

 

즉, OCP는 클래스같은 소프트웨어 엔티티는 확장(extends)에 열려있어야 하지만 변화에는 닫혀있어야 한다는 원칙입니다.

 


 

어댑터 패턴(Adepter Pattern)

 

마트에 방문한 손님은 물품을 구매합니다.

마트의 포스기는 제품들의 재고상황, 신제품, 없어진 제품 등을 관리합니다.

손님은 포스기 덕분에 마트의 제품들에 대한 변화에 영향을 받지 않고 편하게 제품을 구매할 수 있습니다.

 

@log4j2
public class Product1{
    
    
    void purchase1{
    	log.info("1번 제품을 구매하였습니다.");
    } // purchase1
    
} // end class

 

@log4j2
public class Product2{
    
    
    void purchase2{
    	log.info("2번 제품을 구매하였습니다.");
    } // purchase2
    
} // end class

 

위 코드는 손님이 구매할 제품군입니다. 제품을 구매하기 위해 포스기가 있어야 합니다.

 

 

@log4j2
public class Pos{
    Purchase1 p1 = new Purchase();
    
    void runService1{
    	p1.purchase1;
    } // purchase1
    
     void runService2{
    	p2.purchase2;
    } // runService2
    
} // end class

 

제품을 구매할 포스기가 구비되었으니 이제 손님은 포스기를 이용해 제품을 구매합니다.

 

 

@log4j2
public class Consumer{
	
    
    public static class main(String[] args){
    	Pos pos = new Pos();
        
        
        pos.runService1();  // 1번 제품을 구매하였습니다.
        pos.runService2();  // 2번 제품을 구매하였습니다.
        
    } // main
    
} // end class

 

 

어댑터 패턴은 간단히 말해,

호출자가 변환기(Converter)를 이용해 피호출자를 호출하는 방식의 디자인 패턴입니다.

 

 

'Java > Design Patterns' 카테고리의 다른 글

암호화 알고리즘  (0) 2023.09.14
프록시 패턴  (0) 2023.08.13

+ Recent posts