外观类就像一个黑盒,只给你结果,不告诉你具体内容。
也像一个看不见里面的内容的贩卖机,只能通过屏幕进行查看商品及购买,您只管买,其他的事儿我来解决!
用到了最少知识原则(least KnowLedge Principle)。
下面用一个例子来实现
public interface Buy { void buy(); }
public class BuyWater implements Buy{ @Override public void buy() { System.out.println("买瓶水,已出货"); } }
public class BuyCookie implements Buy{ @Override public void buy() { System.out.println("买饼干,已出货"); } }
public class ClientBuy { private Buy buyCookie; private Buy buyWater; public void buyCookie(){ buyCookie.buy(); } public void buyWater(){ buyWater.buy(); } }
public class Client { public static void main(String[] args) { ClientBuy clientBuy = new ClientBuy(); clientBuy.buyCookie(); clientBuy.buyWater(); } }
buyWater,buyCookie这两个内部对象并不能被Client访问到,对Client进行了隐藏,而buyCookie()与buyWater()方法却是对Client开放的,Client不需要知道buyCookie,buyWater对象及具体实现方法,只需要调用方法即可。
外观类只给你该给你看的用的,不给你你不该看的用的。嘤嘤嘤好真实。