NOTE

6.17 外观模式

1. 定义 把复杂的流程封装到一个类中,比如各种util 2. uml 3. Java 3.1. client 3.2. 复杂流程 3.3. 外观 4. Golang 4.1. 复杂流程 4.2. 外观 4.3. client

Software Architecture & Engineering约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 定义

把复杂的流程封装到一个类中,比如各种util

2. uml

PlantUML 图表

3. Java

3.1. client

public class Client
{
    public static void main(String[] args)
    {
        Facade facade = new Facade();
        facade.run();
    }
}

3.2. 复杂流程

public class 流程1
{
    public void run()
    {
        System.out.println("流程1");
    }

}
public class 流程2
{
    public void run()
    {
        System.out.println("流程1");
    }
}

3.3. 外观

public class Facade
{
    public void run()
    {
        流程1 a = new 流程1();
        流程2 b = new 流程2();

        a.run();
        b.run();

    }
}

4. Golang

4.1. 复杂流程

type ExportExcelUtilImpl struct {
}

func NewExportExcelUtilImpl() *ExportExcelUtilImpl {
	return &ExportExcelUtilImpl{}
}

func (e ExportExcelUtilImpl) Export() *Excel {
	excel := &Excel{}
	excel.Name = "导出"
	//读取数据库
	data := e.readFromDB()
	//渲染到Excel
	renderToExcel(excel, data)
	//返回Excel
	return excel
}

func (e ExportExcelUtilImpl) readFromDB() []byte {
	return nil
}

func renderToExcel(excel *Excel, data []byte) {
	excel.Data = data
}

4.2. 外观

/*Util类要返回的产品*/
type Excel struct {
	Name string
	Data []byte
}

func (e Excel) ToString() string {
	return e.Name
}

/*Excel导出工具类*/
type ExportExcelUtil interface {
	Export() Excel
}

4.3. client

func main() {
	fmt.Println(结构型模式.NewExportExcelUtilImpl().Export().ToString())
}

讨论

使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看