外观模式是一种结构型设计模式,它提供了一种简单的接口,隐藏了系统的复杂性,使得客户端可以更容易地使用系统。

与工厂模式的区别在于,工厂模式主要用于创建对象,而外观模式主要用于简化客户端的接口。在工厂模式中,客户端需要知道要创建的对象的类型,然后通过工厂来创建对象;而在外观模式中,客户端只需要知道外观对象提供的接口,不需要知道系统内部的实现细节

外观模式的主要应用场景是在设计系统时,需要对复杂的子系统进行封装,提供一个简单的接口给客户端使用。比如,操作系统中的API就是一种外观模式,它将操作系统内部的许多复杂的操作封装成了简单的API接口,供应用程序使用。另外,外观模式也可以用于简化应用程序中的复杂模块,提高代码的可维护性和可读性。

外观模式是一种非常有用的设计模式,它可以帮助我们简化复杂的系统和模块,提高代码的可维护性和可读性。

下面给出一个使用外观模式的具体例子。

假设我们正在开发一个音乐播放器应用程序,它需要播放不同的音频格式,比如MP3、FLAC、WAV等。我们可以使用外观模式来简化客户端与音频播放库的交互过程。

首先,我们定义一个音频播放器的外观接口:

type AudioPlayer interface {
    Play(filename string)
}

然后,我们实现不同音频格式的播放器:

type

(Golang)外观模式 VS 工厂模式相关推荐

  1. 设计模式-策略模式,观察者模式,装饰者模式,静态工厂模式,工厂方法模式

    设计模式这个东西,永远不是单单从书本上就能获取到的东西.曾经看到一个比喻,比喻的就很巧妙,文艺复兴时期的教学方式,那时候诞生了很多巨匠,达芬奇,莫开朗基罗,拉斐尔都是在这个时期绽放光芒的巨星.有一种说 ...

  2. 创建型模式 简单工厂模式

    创建型模式 简单工厂模式 /*** 创建型模式 简单工厂模式* 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类.** ...

  3. Java中设计模式之工厂模式-4

    一.工厂模式由来 1)还没有工厂时代:假如还没有工业革命,如果一个客户要一款宝马车,一般的做法是客户去创建一款宝马车,然后拿来用. 2)简单工厂模式:后来出现工业革命.用户不用去创建宝马车.因为客户有 ...

  4. php注册树模式,php基础设计模式大全(注册树模式、工厂模式、单列模式)

    废话不多说了,先给大家介绍注册树模式然后介绍工厂模式最后给大家介绍单列模式,本文写的很详细,一起来学习吧. php注册树模式 什么是注册树模式? 注册树模式当然也叫注册模式,注册器模式.之所以我在这里 ...

  5. 设计模式-策略模式和工厂模式结合使用

    怎么把策略模式和工厂模式结合起来使用 如果大家对策略模式和工厂模式不是很了解的话可以先看前面文章 策略模式:https://www.jianshu.com/p/958281936901 工厂模式:ht ...

  6. Java设计模式之(工厂模式)--简单工厂模式--工厂方法模式--抽象工厂模式

    工厂模式: 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 简单工厂模 ...

  7. 创建型模式——抽象工厂模式

    一. 实验目的与要求 1.练习使用工厂模式.设计相关的模拟场景并进行实施,验证模式特性,掌握其优缺点. 2.实验结束后,对相关内容进行总结. 二.实验内容 1.模式应用场景说明 手机CPU生产工厂:在 ...

  8. 设计模式---5(建造者模式的概念及其实现,建造者模式的角色与职责,建造者模式和工厂模式的区别)

    建造者模式 建造者模式的概念 Builder 模式也叫建造者模式或者生成器模式,是由 GoF 提出的 23 种设计模式中的一种. Builder 模式是一种对象创建型模式之一,用来隐藏复合对象的创建过 ...

  9. 工厂模式,简单工厂模式,抽象工厂模式三者有什么区别

    工厂模式,也叫做说虚构造器,在简单工厂中间插入了一个具体产品工厂,这个工厂知道产品构造时候的具体细节,而简单工厂模式的产品具体构造细节是在一个个if/else分支,或者在switch/case分支里面 ...

  10. Head First设计模式读书笔记四 简单工厂 工厂模式 抽象工厂模式

    本文示例代码材料源自Head First设计模式 以前整理自己整理的链接: 工厂模式 https://blog.csdn.net/u011109881/article/details/56541580 ...

最新文章

  1. Android技术经理+资深工程师+研发工程师-杭州
  2. Linux 下文件打包和压缩
  3. 针对远程主机认证生成并使用 SSH 密钥
  4. PMCAFF|来来来!我们一起重新设计微信公众号(图多杀猫 慎重浏览)
  5. 【更名通知】将以个人名义继续更新维护
  6. css+沿正方形旋转,CSS3+SVG+JS 正方形沿着正方本中轴移动翻转的动画
  7. MAT(Memory Analyzer Tool)工具入门介绍
  8. AcWing 4247. 糖果(差分约束最短路)
  9. FPGA实现任意分频 为所欲为——教你什么才是真正的任意分频
  10. 计算机网络(HTTP、TCP)的连接管理
  11. linux装回windows系统,装linux后怎样装回windows?(Linux系统清除Grub的几种方法)
  12. 影子系统、还原精灵、冰点还原优缺点比较
  13. Arduino - Debugging on the Arduino IDE 2.0
  14. 一路狂奔的“幸运咖”,再造下一个“蜜雪冰城”?
  15. 怎么查看笔记本内存条型号_怎么看电脑内存条型号 电脑内存条型号查看方法【详解】...
  16. 橙单微服务的权限部分
  17. 华为社招/东莞、杭州、成都、西安
  18. 电磁兼容(EMC)测试
  19. 读书笔记专业投机原理
  20. foc学习笔记1——准备工作

热门文章

  1. 用STAR法则设计产品/运营简历
  2. 网页(全屏)背景图实现方式(纯CSS向)
  3. 银联扫码支付及静态码回调验签
  4. mysql用命令修改主键名_MySQL的常用命令:添加外键,修改字段名称,增加字段 设置主键自增长等 落楝花...
  5. 《博客园精华集---CLR/C#分册》第三轮筛选结果 转载
  6. LUNA16图片提取
  7. oracle创建dba,oracle创建一个DBA用户
  8. 程序猿理论系列整理:高级语言、汇编语言、机器语言
  9. Shopee大规模毁约offer,今年的大厂装都不装了
  10. 配置GitHub二级域名,xxx.github.io