Structureモード-Facade(外観)モード

1869 ワード

定義:
サブシステム内のインタフェースのセットに一貫したインタフェースを提供し、外観モードは高レベルのインタフェースを定義し、このインタフェースはこのサブシステムをより容易に使用することができる.
ロールの定義:
  • SubSystem:1つ以上のサブシステムがあり、各サブシステムの機能は相対的に独立している.サブシステムはFacadeの存在を知らないが、サブシステムに対してFacadeは別のクライアント
  • にすぎない.
  • Facade:お客様が呼び出すための統合インタフェースを提供します.このロールは、サブシステムの関連機能
  • を知っています.
    Outlook機能:
    誰もが多くのメールボックスを持っている可能性があります.MSNの、網易の、会社の、googleの.毎日各メールボックスにログインして受信するのは面倒で、メールを漏らすこともあります.そのため、Outlookのようなクライアントツールを使用すると便利になります.
    サブシステム:
    public class NetEaseMail {
    	public void login163Mail() {
    		System.out.println("      ...");
    	}
    	
    	public void getUnreadMail() {
    		System.out.println("            ...");
    	}
    }
     
    public class SinaMail {
    	public void loginSinaMail() {
    		System.out.println("      ...");
    	}
    	
    	public void getUnreadMail() {
    		System.out.println("            ...");
    	}
    }

    外観クラス:
    public class Outlook {
    
    	private NetEaseMail netEaseMail;
    	private SinaMail sinaMail;
    	
    	public Outlook() {
    		netEaseMail = new NetEaseMail();
    		sinaMail = new SinaMail();
    	}
    	
    	public void receiveMails() {
    		netEaseMail.login163Mail();
    		netEaseMail.getUnreadMail();
    		sinaMail.loginSinaMail();
    		sinaMail.getUnreadMail();
    	}
    }

    最後にOutlookだけですべてのメールボックスの手紙を簡単に受け取ることができます.
    public class You {	
            public static void main(String args[]) {
    		new Outlook().receiveMails();
    	}
    }

    出力結果:
    ログインメールアドレス...網易メールボックスをダウンロードした未読メール...新浪メールボックスにログイン...新浪メールボックスの未読メールをダウンロードしました...
     
    いつかGMailのメールボックスに登録したら、Outlookクラスを変更するだけでいいです.従って,外観モードは実際にはシステム間関係を円滑にし,システム間結合度を低減する方法である.