zoukankan      html  css  js  c++  java
  • 浅谈Python设计模式

      声明:本系列文章主要参考《精通Python设计模式》一书,并且参考一些资料,结合自己的一些看法来总结而来。

     外观模式

      外观模式的核心在于将复杂的内部实现包装起来,只向外界提供简单的调用接口。类似现实世界中的电脑,开机按钮可以说就是一个简单的调用接口,帮用户屏蔽了复杂的内部电路。

    外观设计模式 -- 有助于隐藏系统的内部复杂性,并且通过一个简化的接口向客户端暴露必要的部分。本质上,外观是在已有复杂系统之上实现的一个抽象层。

      本来想引用书中的例子,但是其整个代码被复杂化,不好理解。然后在网上看到一篇简单易懂的例子。知乎:通俗Python设计模式-- 外观模式

     示例:

      假设我们需要将计算机抽象,并且这个计算机启动仅需两步:调用BIOS和内核,关闭同样只是顺序相反。那么首先我们声明一个 Computer 类,它只提供 start 和 stop 方法供外部调用。

      当然实际上电脑的开机和关机肯定不止这些步骤,假设有很多很多步,那么这时候的外观模式显得更加重要了。只需要调用 Computer的 start 和 stop 方法即可完成开机和关机的功能,而不需要去调用某些方法去开启各个系统,比如文件系统、进程服务系统等。

    class Computer(object):  
        def __init__(self):
            self.bios = Bios()
            self.kernal = Kernal()
        def start(self):
            for i in (self.bios, self.kernal):
                i.start()
        def stop(self):
            for i in (self.kernal, self.bios):
                i.stop()

      然后我们需要将 Bios 和 Kernal 类声明出来。

    class Bios(object):  
        def __init__(self):
            pass
        def start(self):
            print('bios start ok')
        def stop(self):
            print('bios stop ok')
    
    class Kernal(object):  
        def __init__(self):
            pass
        def start(self):
            print('kernal start ok')
        def stop(self):
            print('kernal stop ok')

      然后对于用户来讲,当他实例化了一个 computer 对象后,如果需要执行启动操作,只需要调用 computer.start() 即可完成所有启动过程,无需自己逐步的调用 bios 和 kernal 进行启动。如此一来就实现了将复杂逻辑进行封装的目的。

      这其实也是Python一直提倡的封装思想,隐藏一些丑陋的系统,提供API去调用,不用管内部如何实现,只需调用API即可实现相关功能。

      over~~~,参考:https://zhuanlan.zhihu.com/p/24906483,大家也可以去看看,感觉将的很通俗易懂。

  • 相关阅读:
    思维导图
    Delphi 之弹出气泡消息提示
    delphi 响应鼠标进入控件消息
    Delphi 获取当前鼠标下的控件内容
    delphi TTBXToolBar 增加外部控件
    delphi button 实现下拉列表
    delphi 设置多屏幕
    电脑双屏改单屏后看不到文件问题的解决
    delphi ListView 设置固定列宽
    数字孪生(Digital twin)
  • 原文地址:https://www.cnblogs.com/littlefivebolg/p/9929877.html
Copyright © 2011-2022 走看看