外观模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zahngjialiang/article/details/79973853

理解可能不甚准确,如有错误,还请指出,多谢!

简介:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。简而言之:就是隐藏系统实现的复杂性,只暴露简单的接口供用户使用。这种设计模式运用比价多,比如java web的三层开发模式。

下面的例子是一个关于电脑开关机的过程。电脑开机,其中的各种硬件会进行非常复杂的调度,但对用户来说,他并不需要知道这么多。

/**
 *电脑硬件,可以启动,可以关闭,可以工作
 */
public interface Hardware {
	void startover();
	void close();
	void work();
}

/**
 *CPU
 */
class CPU implements Hardware{

	@Override
	public void startover() {
		System.out.println("CPU启动了");
	}

	@Override
	public void close() {
		System.out.println("CPU关闭了");
		
	}

	@Override
	public void work() {
		System.out.println("CPU开始工作,工作原理省略,太复杂~~");
		
	}
}

/**
 *内存
 */
class Memory implements Hardware{

	@Override
	public void startover() {
		System.out.println("内存启动了");
		
	}

	@Override
	public void close() {
		System.out.println("内存关闭了");
		
	}

	@Override
	public void work() {
		System.out.println("内存开始工作了,工作原理省略");
		
	}
	
}

/**
 *电脑硬盘
 */
class HardDisk implements Hardware{

	@Override
	public void startover() {
		System.out.println("硬盘启动了");
		
	}

	@Override
	public void close() {
		System.out.println("硬盘关闭了");
		
	}

	@Override
	public void work() {
		System.out.println("硬盘开始工作");
		
	}
}

class Computer {
	private CPU  cpu;
	private Memory memory;
	private HardDisk hardDisk;
	
	public Computer() {
		super();
		this.cpu = new CPU();
		this.memory = new Memory();
		this.hardDisk = new HardDisk();
	}
	
	
	//开机顺序:CPU->内存->硬盘
	public void openComputer(){
		cpu.startover();
		cpu.work();
		memory.startover();
		memory.work();
		hardDisk.startover();
		hardDisk.work();
	}
	
	
	//关机顺序:和开机顺序恰相反
	public void closeComputer(){
		hardDisk.close();
		memory.close();
		cpu.close();
	}
}

运行结果:

主程序:

	public static void main(String[] args) {
		Computer computer=new Computer();
		computer.openComputer();
		computer.closeComputer();
	}

运行结果:

CPU启动了
CPU开始工作,工作原理省略,太复杂~~
内存启动了
内存开始工作了,工作原理省略
硬盘启动了
硬盘开始工作
硬盘关闭了
内存关闭了
CPU关闭了



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页