设计模式案例代码之外观模式

转载请注明出处:http://blog.csdn.net/droyon/article/details/8744778

外观模式:提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更容易的使用。

外观模式的作用是简化接口,将客户端从组件中解耦。适配器模式也处理接口,不过是转化接口。

外观模式让我们的客户和子系统之间避免紧耦合。


森林要召开音乐会,所有的动物都要参加。开幕式所有动物都要参与唱歌。每个动物唱歌的方法不一样,比如,小花猫唱歌的方法为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();
	}
}

测试结果:

音乐会开始,全体,预备唱~~~
猫:喵
狗:汪汪
绵羊:咩咩
小鸟:啊啊啊啊~
--------------------
音乐会,结束,大家各回各家~
猫:音乐会结束,回家捉老鼠去了
狗:回到主人身边,看家护院
绵羊:音乐会结束,吃草去
小鸟:音乐会结束,回家找妈妈


总结:

这个模式体现了一个原则:最少知识原则:只和你的密友谈话。不要让太多的类耦合在一起,避免修改系统的一部分,影响到其他部分。我们应该多封装方法,减少对象的引入,避免依赖太多的对象。

当需要简化并统一很大的接口或者一群复杂的接口时,使用外观模式。外观模式可以让客户从一个复杂的子系统中解耦。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hailushijie

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值