IT铁人DAY 21-Facade 外观模式

  今天要介绍的模式是属於结构型模式的一种,我个人觉得他还蛮简单的,有点像是程序码中的主要窗口,现在就来看看它会做哪些事吧!


问题情境与解析

  Facade,顾名思义它就是建筑物的表面,而在程序中,就是我上面所讲的使用者窗口,即使我们对窗口後面的运作情况一无所知,但我们还是可以透过这个窗口来做许多事情。

  举个例子,当我们在电商平台下订单时,如果有甚麽需求或是需要协助的地方,通常我们就会拨打客服电话来解决我们的问题,而客服就是电商平台的窗口,不管是要了解订单的出货情况,还是想更换商品需求,抑或是要取消订单等等,客服就可以解决在电商平台可能会碰到的大小事。

  上面所说的客服就是一个类别,它包含了电商平台大多数的服务(Model),并且提供了对外使用者的窗口,如此一来,就可以让使用者从其去处理在电商平台所遇到的问题。

Class Diagram

https://ithelp.ithome.com.tw/upload/images/20211006/20140743U26bVGue0X.png

Skeleton Code

class SubObject {
    public void operation() {
        // do something
    }
}
						.
						.
						.

class Facade {
    private SubObject subObject;
    
    public void subObjectOperation() {
        // invoke SubObject to work
        subObject = new SubObject();
        subObject.operation();
    }
    // It may have many object to do different things.
}

  通常子系统会随着时间的推移变得越来越复杂,即使应用设计模式也会创造许多类别在系统上面。当遇到这样的问题,我们就可以运用Facade来做为复杂系统功能的窗口,解决使用者在系统上遇到的情境与提供需要的功能。


除此之外,也欢迎大家走走逛逛关於我们团队夥伴的文章

lu23770127 - SASS 基础初学三十天

10u1 - 糟了!是世界奇观!

juck30808 - Python - 数位行销分析与 Youtube API 教学

SiQing47 - 前端?後端?你早晚都要全端的,何不从现在开始?


<<:  JavaScript的语法规定

>>:  Youtube Analytics API 教学 - 年轻人取暖小窝 'ageGroup' 维度

DAY3 起手式--Nuxt.js路由设定

Nuxt.js 跟 Vue-Router 是什麽关系? 有使用过 vue-router 的捧由,别紧...

安全测试员的职业道德败给贪念

故事简述 我们故事的主角是微软的一名安全测试猿——Volodymyr Kvashuk,他的工作是测试...

[Angular] Day21. Common Routing Tasks (一)

上一张介绍完什麽是 router 与他的基本用法之後,接着要来继续介绍 Angular router...

Day27 - this&Object Prototypes Ch3 Objects - Review

Obgect content Getter 与 Setter : 他们是 Object 内建的 p...

【C++】Encryption and Decryption

在学习Encryption 跟Decryption前~ ASCII电脑编码系统是必须要知道的。 AS...