23种设计模式:外观模式
外观模式
1.介绍
概念
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。
主要作用
为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
解决的问题
降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。
使用场景
1、为复杂的模块或子系统提供外界访问的模块。 2、子系统相对独立。 3、预防低水平人员带来的风险。
2.实现
java实现
1.创建电脑接口
public interface Compater {
void open();
}
2.创建Cpu类
public class Cpu implements Compater{
@Override
public void open() {
System.out.println("启动CPU.");
}
}
3.创建Ddr类
public class Ddr implements Compater{
@Override
public void open() {
System.out.println("启动内存.");
}
}
4.创建Ssd类
public class Ssd implements Compater{
@Override
public void open() {
System.out.println("启动硬盘.");
}
}
5.创建外观类
public class Facade {
private Cpu cpu;
private Ddr ddr;
private Ssd ssd;
public void openCpu() {
Cpu cpu = new Cpu();
cpu.open();
}
public void openDdr() {
Ddr ddr = new Ddr();
ddr.open();
}
public void openSsd() {
Ssd ssd = new Ssd();
ssd.open();
}
}
6.创建测试类,用户在启动电脑时,无需自己直接开启CPU、ddr、ssd,直接使用facade提供的按钮(方法)即可。
public class FacadePattern {
public static void main(String[] args) {
Facade facade = new Facade();
facade.openCpu();
facade.openDdr();
facade.openSsd();
}
}
7.运行结果
启动CPU.
启动内存.
启动硬盘.
golang实现
package FacadePattern
import "fmt"
type Computer interface {
open()
}
type Cpu struct {}
func (*Cpu) open() {
fmt.Println("启动CPU.")
}
type Ddr struct {}
func (*Ddr) open() {
fmt.Println("启动内存.")
}
type Ssd struct {}
func (*Ssd) open() {
fmt.Println("启动硬盘.")
}
type Facade struct {
cpu Cpu
ddr Ddr
ssd Ssd
}
func (f *Facade) openCpu() {
f.cpu = Cpu{}
f.cpu.open()
}
func (f *Facade) openDdr() {
f.ddr = Ddr{}
f.ddr.open()
}
func (f *Facade) openSsd() {
f.ssd = Ssd{}
f.ssd.open()
}
package FacadePattern
import "testing"
func TestFacadePatternDemo(t *testing.T) {
facade := Facade{}
facade.openCpu()
facade.openDdr()
facade.openSsd()
}