设计模式:外观模式(Facade)

文章目录什么是外观模式必须了解的迪米特法则外观模式的核心外观模式必须记住的三个角色门面角色客户角色子系统角色经典案例:电脑的开关机开发中常见的场景什么是外观模式外观模式就是指通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象.隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口.为子系统中的一组接口提供了一个统一的访问接口.这个接口使得子系统更容易被访问或者使用.必须...
摘要由CSDN通过智能技术生成

什么是外观模式

外观模式就是指通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象.隐藏系统的复杂性,并向客户端提供了一个可以访问系统的接口.为子系统中的一组接口提供了一个统一的访问接口.这个接口使得子系统更容易被访问或者使用.

必须了解的迪米特法则

如果两个类不必彼此直接通向,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个累哦的某一个方法的话,可以通过第三者转发这个调用。

迪米特法则首先强调的前提是在类的结构设计上,每一个类都应当降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开。

外观模式的核心

为子系统提供统一的入口.封装子系统的复杂性,以便客户端使用.

外观模式必须记住的三个角色

门面角色

门面角色是外观模式的核心,供客户用户调用,方便客户角色熟悉子系统角色的功能.内部根据客户角色的需求预定了几种功能的组合.

客户角色

通过调用Facade来完成要实现的功能

子系统角色

实现了子系统的功能.对客户角色和门面角色(facade)是未知的.内部可以有系统内的相互交互,也可以提供给外界调用的接口.

经典案例:电脑的开关机

将电脑开关机的实现细节全部隐藏,只留给客户两个方法start()和shutdown().

子系统角色:CPU、Disk、Memory
cpu:

/*
 * 外观模式
 * 子系统:CPU
 */
public class CPU {
	//开启cpu
public void start() {
	System.out.println("CPU is start...");
}
//关闭cpu
public void shutDown() {
	System.out.println("CPU is end...");
}
}

Disk:

/*
 * 外观模式
 * 子系统:磁盘
 */
public class Disk {
	 //启动磁盘
 public void start() {
	
	 System.out.println("Disk is start...");
 }
 //关闭磁盘
 public void shutDown() {
	 System.out.println("Disk is end...");
 }
}

Memory:

/*
 * 外观模式
 * 子系统:内存
 */
public class Memory {

	//开启内存
	public void start() {
	System.out.println("Memory is start...");
}
	//停止内存
	public void shutDown() {
		System.out.println("Memory is end...");
	}
}

门面模式角色:Computer

/*
 * 外观模式
 * 门面类:computer
 * 提供给客户使用的类
 */
public class Computer {
	//将子系统依赖进来,只提供方法访问他们
	private CPU cpu;
	private Disk disk;
	private Memory memory;
	
	public Computer() {
		cpu=new CPU();
		disk=new Disk();
		memory=new Memory();
	}
	//开机
	public void start() {
		System.out.println("computer start begin...");
	cpu.start();
	disk.start();
	memory.start();
	System.out.println("Computer start end...");
	}
	//关机
	public void shutDown() {
		System.out.println("Computer shutdown begin...");
	cpu.shutDown();
	disk.shutDown();
	memory.shutDown();
	System.out.println("Computer shutdown end...");
	}

}

客户角色:Test(使用门面模式的类就是客户)

public class Test {
	 public static void main(String[] args) {
	        Computer computer = new Computer();
	        System.out.println("开机");
	        computer.start();
	        System.out.println("关机");
	        computer.shutDown();
	    }
}

开发中常见的场景

  • JDBC封装后的,commons提供的DBUtils类,Hibernate提供的工具类、Spring JDBC工具类等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值