外观模式

原创 2015年11月19日 17:54:36

外观模式:为子系统的一组接口,提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

在讲外观模式前,我们引入两个设计模式中的两个重要原则:依赖倒转原则迪米特法则

依赖倒转原则:抽象不依赖细节,细节要依赖抽象。简单讲,就是面向接口编程,而不面向实现编程

迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果其中的一个类需要调用另一个类,则由第三方转发这个调用。

外观模式完美的体现了依赖倒转原则迪米特法则

我们用经理人购买股票基金来进行说明,普通客户是不懂得投资股票和基金的,但是我们可以交给经理人,这样,我们直接面向经理人,不用了解细节。

外观模式结构图如下:


代码如下

class Fund1{
	public void Method1(){
		System.out.println("第一种基金");
	}
}
class Fund2{
	public void Method2(){
		System.out.println("第一种基金");
	}
}
class Stock1{
	public void Method3(){
		System.out.println("第一种股票");
	}
}
class Stock2{
	public void Method4(){
		System.out.println("第二种股票");
	}
}
/*
 * 外观类
 * 与客户(端)直接作用
 */
class  Manager{
	private Fund1 fund1;
	private Fund2 fund2;
	private Stock1 stock1;
	private Stock2 stock2;
	public Manager(){
		 fund1 = new Fund1();
		 fund2 = new Fund2();
		 stock1 = new Stock1();
		 stock2 = new Stock2();
	}
	public void MethodA(){
		stock1.Method3();
		stock2.Method4();
	}
	public void MethodB(){
		fund1.Method1();
		fund2.Method2();
		stock2.Method4();
	}
}
public class  Client{
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Manager manager = new Manager();
		System.out.println("经理人为小红购买的基金和股票:");
		manager.MethodA();
		System.out.println("经理人为小强购买的基金和股票:");
		manager.MethodB();

	}

}
运行结果:
经理人为小红购买的基金和股票:
第一种股票
第二种股票
经理人为小强购买的基金和股票:
第一种基金
第一种基金
第二种股票

外观模式Demo

  • 2017年06月09日 11:15
  • 19.45MB
  • 下载

第14章_外观模式

  • 2012年09月27日 10:29
  • 1.12MB
  • 下载

2016.12.22 学习日记-外观模式

今晚终于考完了大物,应该是要和物理说再见了,时间终于多一点了,多学学线代尽量让这学期的绩点不要太难看。设计模式也要花更多的精力了,Only for dreams! 今天学习的是一个比较简单的模式,外...

外观模式.txt

  • 2013年05月08日 21:42
  • 5KB
  • 下载

适配器和外观模式

  • 2016年03月10日 09:20
  • 331KB
  • 下载

结合laravel Facade看外观模式怎么用?

在laravel中,我们经常通过facade来实现全局调用某个方法而不需要实例化一个对象,今天就来扒一扒它是怎样做到的。所有的Facade都是继承自同一个抽象父类Illuminate\Support\...

详解适配器与外观模式

  • 2013年03月29日 19:59
  • 72KB
  • 下载

装饰者,适配器,代理和外观模式的区别

装饰者: 封装一个对象,并提供额外的行为,用组合的方式来替代继承以扩展类的功能 适配器:封装一个对象,并提供接口的转换,主要的目的是在不修改已经存在的类的前提下,让他们可以在新的框架...
  • wind19
  • wind19
  • 2012年03月20日 14:15
  • 4007

外观模式 - 代码(Java)

  • 2014年06月17日 17:14
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:外观模式
举报原因:
原因补充:

(最多只允许输入30个字)