美文网首页
门面模式--招个助理一条龙服务

门面模式--招个助理一条龙服务

作者: space0o0 | 来源:发表于2019-06-15 19:42 被阅读0次

这次介绍门面模式,主旨思想就是客户端通过一个统一的对象,完成一系列任务。而客户端是不用知道每一个任务的具体实现和顺序。可以理解为门面对象整理好一系列任务,我们直接调用就行。

自从开了彩笔厂后,大熊每日的工作日渐繁忙,各种工作,应酬,交际,应接不暇。每天忙的晕头转向。

我们先看一下大熊自己怎么安排一天的工作

大熊是彩笔厂的老板(Boss)

class Boss {
    //工作
    fun work(workInfo: String) {
        println("boss 去 $workInfo")
    }
}

一天的工作计划

interface Work {
    fun doWork(boss: Boss)
}
//一天的行程计划表
class WorkOne : Work {
    override fun doWork(boss: Boss) {
        boss.work("开会")
    }
}
class WorkTwo:Work{
    override fun doWork(boss: Boss) {
        boss.work("饭局")
    }
}
class WorkThree:Work{
    override fun doWork(boss: Boss) {
        boss.work("去工厂考察")
    }
}
class WorkFour : Work {
    override fun doWork(boss: Boss) {
        boss.work("赶飞机出差")
    }
}

大熊的一天开始了

fun main(args: Array<String>) {
    //一天的开始

    //大熊起床
    var boss = Boss()

    //自己打开工作计划表
    var work1 = WorkOne()
    var work2 = WorkTwo()
    var work3 = WorkThree()
    var work4 = WorkFour()

    //安排自己的工作
    work1.doWork(boss)
    work2.doWork(boss)
    work3.doWork(boss)
    work4.doWork(boss)
}
------------------------------------------------
logcat:
boss 去 开会
boss 去 饭局
boss 去 去工厂考察
boss 去 赶飞机出差

如果大熊要修改工作安排,就得不停的切换workList。从代码上来说,就是把所有具体方法都暴露出来,客户端就需要知道每个方法的具体实现。这就导致了代码过渡耦合,客户端和具体实现方法的复杂度大大提高了。

为了解决这种情况,大熊决定找个助理,让他每天帮忙安排工作议程。

这样,我们的门面对象(Assistant)就出来了

class Assistant{

    //助理列出了一天的工作
    var work1 = WorkOne()
    var work2 = WorkTwo()
    var work3 = WorkThree()
    var work4 = WorkFour()

    //安排
    fun plan(boss: Boss){
        //提醒boss做第一条工作
        work1.doWork(boss)

        work2.doWork(boss)
        work3.doWork(boss)
        work4.doWork(boss)
    }
}

大熊招了助理后,新的一天

fun main(args: Array<String>) {
    //一天的开始

    //大熊起床
    var boss = Boss()

    //把助理叫过来
    var assistant = Assistant()

    //让助理安排自己的工作
    assistant.plan(boss)
}

大熊再也不会因为工作议程忙的焦头烂额

至此,门面模式的优势就体现出来了

把一堆功能都交给门面对象来处理,客户端只需调用门面对象。在门面对象中修改处理流程,都不会影响客户端,也就实现了简单的解耦。

相关文章

  • 门面模式--招个助理一条龙服务

    这次介绍门面模式,主旨思想就是客户端通过一个统一的对象,完成一系列任务。而客户端是不用知道每一个任务的具体实现和顺...

  • 34 Java设计模式系列-门面模式

    一、门面模式 门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层...

  • 常用开源框架中设计模式使用分析- 门面模式(Facade Pat

    七、 门面模式(Facade Pattern) 7.1 介绍 门面模式是一种结构性模式,它通过新增一个门面类对外暴...

  • 门面模式

    概念 为了满足一组系统接口使用变得更简单,需要提供统一的访问入口。我们可以将这一组系统接口简化为一个接口,那么也算...

  • 门面模式

    门面模式 定义 门面模式也叫做外观模式,是一种比较常用的封装模式。要求一个子系统的外部与其内部的通信必须通过一个统...

  • 门面模式

    子系统(细节)角色 门面角色 场景使用

  • 门面模式

    门面模式:个人理解,就是在客户端和实现类之间松耦合的一种方式。如果客户端需要操作很多的逻辑,可以将逻辑封装到一个类...

  • 门面模式

    1.定义# 要求一个子系统(具有很多类的一个系统)的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个...

  • 门面模式

    门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使...

  • 门面模式

    门面模式的定义 门面模式(Facade Pattern)也叫做外观模式。定义:要求一个子系统的外部与其内部的通信必...

网友评论

      本文标题:门面模式--招个助理一条龙服务

      本文链接:https://www.haomeiwen.com/subject/xcpbfctx.html