首页 > 其他 > 详细

外观模式(Facade)

时间:2015-09-01 17:07:45      阅读:175      评论:0      收藏:0      [点我收藏+]

外观模式是为了解决类与类之间的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例)

技术分享

public class CPU {
	public void startup(){
		System.out.println("cpu startup!");
	}
	
	public void shutdown(){
		System.out.println("cpu shutdown!");
	}
}
public class Disk {
	public void startup(){
		System.out.println("disk startup!");
	}
	
	public void shutdown(){
		System.out.println("disk shutdown!");
	}
	
}
public class Memory {
	public void startup(){
		System.out.println("memory startup!");
	}
	
	public void shutdown(){
		System.out.println("memory shutdown!");
	}
	
}
public class Computer {
	private CPU cpu;
	private Memory memory;
	private Disk disk;
	
    public Computer(){
    	this.cpu=new CPU();
    	this.disk=new Disk();
    	this.memory=new Memory();
    }
	
    public void startup()
    {
    	System.out.println("computer startup!");
    	cpu.startup();
    	memory.startup();
    	disk.startup();
    	System.out.println("start computer finish!");
    }
    
    public void shutdown()
    {
    	System.out.println("begin to close the computer!");
    	cpu.shutdown();
    	memory.shutdown();
    	disk.shutdown();
    	System.out.println("computer close!");
    }
}
public class User {
	public static void main(String[] args) {
		Computer computer =new Computer();
		computer.startup();
		computer.shutdown();
	}
}

测试结果:

computer startup!

cpu startup!

memory startup!

disk startup!

start computer finish!

begin to close the computer!

cpu shutdown!

memory shutdown!

disk shutdown!

computer close!

如果我们没有Computer类,那么,CPU、Memory、Disk他们之间将会相互持有实例,产生关系,这样会造成严重的依赖,修改一个类,可能会带来其他类的修改,这不是我们想要看到的,有了Computer类,他们之间的关系被放在了Computer类里,这样就起到了解耦的作用,这,就是外观模式!

外观模式(Facade)

原文:http://my.oschina.net/carbenson/blog/500199

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!