设计模式之外观模式
2017-04-23 本文已影响8人
smallstrong
外观模式UML.png外观模式,例子是我经常去莲花街一家叫好吃不如饺子的店,东西好吃,便宜实惠。
interface Food{
void eat();
}
食物接口 吃方法
class Dumplings implements Food{
public void eat(){
//嫂子家的饺子,感觉一般般
}
}
饺子
class SaucedNoodles implements Food{
public void eat(){
//嫂子家的打卤面 么的说
}
}
打卤面
class IronBoardRice implements Food{
public void eat(){
//嫂子家的铁板饭 也么的说
}
}
铁板饭
class RestaurantFacade{
Food mDumplings,mSaucedNoodles,mIronBoardRice;
public RestaurantFacade(){
//无参构造
}
public void eatDumplings(){
if(mDumplings == null){
mDumplings = new Dumplings();
}
mDumplings.eat();
}
public void eatSaucedNoodles(){
if(mSaucedNoodles == null){
mSaucedNoodles = new SaucedNoodles();
}
mSaucedNoodles.eat();
}
public void eatIronBoardRice(){
if(mIronBoardRice == null){
mIronBoardRice = new IronBoardRice();
}
mIronBoardRice.eat();
}
}
好吃不如饺子这家店,提供各色菜系
public class Client{
public static void main(String[] args){
RestaurantFacade mRestaurantFacade = new RestaurantFacade();
mRestaurantFacade.eatDumplings();//吃饺子
mRestaurantFacade.eatSaucedNoodles();//吃打卤面
mRestaurantFacade.eatIronBoardRice();//吃铁板饭
}
}
客户端调用这家店,点菜吃东西
个人的理解
外观模式又叫门面模式,在很多开源库中都很常见,更多的作用是一种客户端与具体实现类的隔离。