[자바 디자인 패턴] 구조패턴 - 퍼사드 패턴

2021. 3. 17. 17:34 JAVA/Design Patterns

구조패턴 목록

 

사용하는 객체를 배려한 패턴이라고 생각한다. 각각의 단위기능을 사용자가 더 편리하게 이용할 수 있도록 하려면 인터페이스를 어떤 형태로 제공해야 하는지를 많이 고민해야 할 것 같다.

 

장점

- 하위 시스템 구성요소의 복잡성으로부터 클라이언트를 보호합니다.

- 서브 시스템과 클라이언트 사이의 느슨한 결합을 촉진합니다.

 

사용시기

- 복잡한 하위 시스템에 간단한 인터페이스를 제공하려는 경우

- 클라이언트와 추상화의 구현 클래스간에 여러 종속성이 존재하는 경우

 

UML

 

Interface Class : MobileShop

public interface MobileShop {
    public void modelNo();  
    public void price();  
}

 

Model Class : Iphone, Samsung, Blackberry

public class Iphone implements MobileShop {  
    @Override  
    public void modelNo() {  
        System.out.println(" Iphone 6 ");  
    }
    
    @Override  
    public void price() {  
        System.out.println(" Rs 65000.00 ");  
    }  
}
public class Samsung implements MobileShop {  
    @Override  
    public void modelNo() {  
        System.out.println(" Samsung galaxy tab 3 ");  
    }  
    
    @Override  
    public void price() {  
        System.out.println(" Rs 45000.00 ");  
    }  
}
public class Blackberry implements MobileShop {  
    @Override  
    public void modelNo() {  
        System.out.println(" Blackberry Z10 ");  
    }  
    
    @Override  
    public void price() {  
        System.out.println(" Rs 55000.00 ");  
    }  
}

 

Facade Class : ShopKeeper

public class ShopKeeper {  
    private MobileShop iphone;  
    private MobileShop samsung;  
    private MobileShop blackberry;  
      
    public ShopKeeper(){  
        iphone= new Iphone();  
        samsung=new Samsung();  
        blackberry=new Blackberry();  
    }
    
    public void iphoneSale(){  
        iphone.modelNo();  
        iphone.price();  
    }
    
    public void samsungSale(){  
        samsung.modelNo();  
        samsung.price();  
    }  
    
    public void blackberrySale(){  
        blackberry.modelNo();  
        blackberry.price();  
    }  
}

 

Operation Class : FacadePatternClient

public class FacadePatternClient {  
    public static void main(String args[]) {  
        ShopKeeper sk=new ShopKeeper();
        
        sk.iphoneSale();  
        sk.samsungSale();        
        sk.blackberrySale();       
    }  
} 

 

 

 

출처 : https://www.javatpoint.com/

know-one-by-one.tistory.com/43