社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
作为一个编程菜鸟,过去在学习设计模式的时候,老师给推荐了一本《大话设计模式》。阅读以后受益匪浅,可惜当初没有坚持看完。
最近有时间了,又重新捡起来学习了一遍,整理了一下笔记,由于本人能力有限,欢迎大家批评指正。
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
它需要了解所有的子系统的方法或属性,进行组合,以备外界调用。为子系统提供一个共同的对外接口。
实现子系统的功能,处理Facade对象指派的任务,注意子类中没有Facade的任何信息,即没有对Facade对象的引用。
客户对象通过一个外观接口读写子系统中各接口的数据资源。
package com.longinus.fp;
public class BigFrenchFries {
public void sell(){
System.out.print("大薯 ");
}
}
package com.longinus.fp;
public class MidFrenchFries {
public void sell(){
System.out.print("中薯 ");
}
}
package com.longinus.fp;
public class MinFrenchFries {
public void sell(){
System.out.print("小薯条 ");
}
}
package com.longinus.fp;
public class Hamburger {
public void sell(){
System.out.print("热辣鸡腿堡 ");
}
}
package com.longinus.fp;
public class FriedChicken {
public void sell(){
System.out.print("吮指原味鸡 ");
}
}
package com.longinus.fp;
public class Cola {
public void sell(){
System.out.print("可乐 ");
}
}
package com.longinus.fp;
public class KfcFacade {
Hamburger hb;
BigFrenchFries bf;
MidFrenchFries mdf;
MinFrenchFries mif;
FriedChicken fc;
Cola ca;
public KfcFacade(){
hb = new Hamburger();
bf = new BigFrenchFries();
mdf = new MidFrenchFries();
mif = new MinFrenchFries();
fc = new FriedChicken();
ca = new Cola();
}
public void SetMealA(){
System.out.print("你购买了套餐A:");
hb.sell();
mdf.sell();
ca.sell();
System.out.println();
}
public void SetMealB(){
System.out.print("你购买了套餐B:");
mif.sell();
System.out.println();
}
public void SetMealC(){
System.out.print("你购买了套餐C:");
fc.sell();
bf.sell();
ca.sell();
System.out.println();
}
}
package com.longinus.fp;
public class Test {
public static void main(String[] args) {
KfcFacade kfc = new KfcFacade();
kfc.SetMealC();
}
}
你购买了套餐C:吮指原味鸡 大薯 可乐
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!