设计模式案例代码之外观模式
2013-04-01 00:35
295 查看
转载请注明出处:http://blog.csdn.net/droyon/article/details/8744778
外观模式:提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更容易的使用。
外观模式的作用是简化接口,将客户端从组件中解耦。适配器模式也处理接口,不过是转化接口。
外观模式让我们的客户和子系统之间避免紧耦合。
森林要召开音乐会,所有的动物都要参加。开幕式所有动物都要参与唱歌。每个动物唱歌的方法不一样,比如,小花猫唱歌的方法为quack,小狗唱歌的方法为bake,小鸟的唱歌方法为sing,而且音乐会结束,要通知每个动物音乐会结束了。
主办方难道真的要一个动物一个动物的调用他们唱歌的方法吗,而且在音乐会结束时,要一个一个的通知音乐会结束吗?看看外观模式怎么帮助他们。
案例代码下载
1.Cat.java
2.Dog.java
4.Sheep.java
5.AllthiingToMe.java
测试结果:
总结:
这个模式体现了一个原则:最少知识原则:只和你的密友谈话。不要让太多的类耦合在一起,避免修改系统的一部分,影响到其他部分。我们应该多封装方法,减少对象的引入,避免依赖太多的对象。
当需要简化并统一很大的接口或者一群复杂的接口时,使用外观模式。外观模式可以让客户从一个复杂的子系统中解耦。
外观模式:提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更容易的使用。
外观模式的作用是简化接口,将客户端从组件中解耦。适配器模式也处理接口,不过是转化接口。
外观模式让我们的客户和子系统之间避免紧耦合。
森林要召开音乐会,所有的动物都要参加。开幕式所有动物都要参与唱歌。每个动物唱歌的方法不一样,比如,小花猫唱歌的方法为quack,小狗唱歌的方法为bake,小鸟的唱歌方法为sing,而且音乐会结束,要通知每个动物音乐会结束了。
主办方难道真的要一个动物一个动物的调用他们唱歌的方法吗,而且在音乐会结束时,要一个一个的通知音乐会结束吗?看看外观模式怎么帮助他们。
案例代码下载
1.Cat.java
public class Cat { public void quack(){ System.out.println("猫:"+"喵"); } public void goHome(){ System.out.println("猫:"+"音乐会结束,回家捉老鼠去了"); } }
2.Dog.java
public class Dog { public void bake(){ System.out.println("狗:"+"汪汪"); } public void homeToGurd(){ System.out.println("狗:"+"回到主人身边,看家护院"); } }3.Bird.java
public class Bird { public void sing(){ System.out.println("小鸟:"+"啊啊啊啊~"); } public void musicIsOver(){ System.out.println("小鸟:"+"音乐会结束,回家找妈妈"); } }
4.Sheep.java
public class Sheep { public void shout(){ System.out.println("绵羊:"+"咩咩"); } public void over(){ System.out.println("绵羊:"+"音乐会结束,吃草去"); } }
5.AllthiingToMe.java
public class AllthingTakeToMe { private Cat mCat; private Dog mDog; private Sheep mSheep; private Bird mBird; public AllthingTakeToMe(Cat cat,Dog dog,Sheep sheep,Bird bird){ mCat = cat; mDog = dog; mSheep = sheep; mBird = bird; } public void allSing(){ mCat.quack(); mDog.bake(); mSheep.shout(); mBird.sing(); } public void over(){ mCat.goHome(); mDog.homeToGurd(); mSheep.over(); mBird.musicIsOver(); } }6.Test.java
public class Test { public static void main(String args[]){ Cat cat = new Cat(); Dog dog = new Dog(); Sheep sheep = new Sheep(); Bird bird = new Bird(); AllthingTakeToMe thingsToMe = new AllthingTakeToMe(cat, dog, sheep, bird); System.out.println("音乐会开始,全体,预备唱~~~"); thingsToMe.allSing(); System.out.println("--------------------"); System.out.println("音乐会,结束,大家各回各家~"); thingsToMe.over(); } }
测试结果:
音乐会开始,全体,预备唱~~~ 猫:喵 狗:汪汪 绵羊:咩咩 小鸟:啊啊啊啊~ -------------------- 音乐会,结束,大家各回各家~ 猫:音乐会结束,回家捉老鼠去了 狗:回到主人身边,看家护院 绵羊:音乐会结束,吃草去 小鸟:音乐会结束,回家找妈妈
总结:
这个模式体现了一个原则:最少知识原则:只和你的密友谈话。不要让太多的类耦合在一起,避免修改系统的一部分,影响到其他部分。我们应该多封装方法,减少对象的引入,避免依赖太多的对象。
当需要简化并统一很大的接口或者一群复杂的接口时,使用外观模式。外观模式可以让客户从一个复杂的子系统中解耦。
相关文章推荐
- 设计模式之原型模式案例代码
- 如何编写优雅的代码:07. 设计模式应用案例(下)
- 设计模式与VB .net代码 外观模式,合成模式
- 设计模式之简单工厂模式学习案例代码
- 如何编写优雅的代码:06. 设计模式应用案例(上)
- 设计模式之状态模式案例代码
- 设计模式讲解与代码实践(十一)——外观
- 设计模式----外观模式UML和实现代码(5个必须掌握的设计模式)
- 用代码和UML图化解设计模式之《观察者模式》
- Android代码中使用的设计模式思想
- js设计模式之外观模式
- 设计模式简单代码之Memento模式
- 常见设计模式代码实现
- 设计模式之Facade(外观 总管 Manager)
- 设计模式C++实现(7)——外观模式、组合模式
- 基本设计模式:单例模式和工厂模式代码实现
- 设计模式之观察者(Observer)模式 代码详解
- 设计模式(九)外观模式Facade(结构型)
- 大话设计之外观模式
- 【C#设计模式-外观模式】