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()
}

其它设计模式

1.工厂模式

2.抽象工厂模式

3.外观模式

4.建造者模式

5.桥接模式

6.命令模式

7.迭代器模式

8.模板模式

9.访问者模式

10.备忘录模式

11.责任链模式

12.中介模式

13.原型模式

14.状态模式

15.策略模式

16.享元模式

17.组合模式

18.解释器模式

19.单例模式

20.适配器模式

21.代理模式

22.装饰器模式

23.观察者模式

posted @ 2021-09-24 20:59  Dawnlight-_-  阅读(59)  评论(0编辑  收藏  举报