zoukankan      html  css  js  c++  java
  • 装饰器与子类化

    WB

    Decorator装饰器模式

    Intent意图:Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality. 为一个对象动态地附加额外的职责。除了子类化这个方案以外,装饰器模式为扩展代码功能提供了另一个灵活的备选方案。

    STST

    子类化是首选
    如果子类化会导致类的数量急剧上升,那就采用这个模式,很管用的一个模式

    因为扩展功能,最自然的方式是子类华,没有有力的说服力的前提下,设计应该采用最自然的方式,这是我的理解

    MB

    如果子类化会导致类的数量急剧上升,那换成装饰器,不也会造成装饰器类数量急剧上升吗

    STST

    装饰器的数量上升是线性的

    而子类话可能是积数的

    MB

    哦?

    STST

    比如:

    苹果 -〉 红苹果,白苹果,大苹果,小苹果

    以及 -〉 红大苹果,红小苹果,白大苹果,白小苹果

    装饰的话:只需要红,白,大,小4种装饰
    子类话的:需要8种子类才能完成

    STST

    这只是颜色和大小上分类,如果再加上[好坏]分类的话

    装饰需要:红,白,大,小,好,坏 6种装饰器,线性增长

    而子类话的话就多了,级数增长

    STST

    装饰的一个目的就是为了控制类数量的增长速度,了解一点算法复杂度的情况下,线性增长和级数增长可不是一点点的差别

    浮沙之上勿筑高台
  • 相关阅读:
    Tkinter的Radiobutton组件
    Tkinter的Canvas组件
    python小程序-日历查询器
    python语言Tkinter的Button组件
    python异常处理机制(try:except)
    python中OS模块的使用
    正则表达式-常用函数的基本使用
    正则表达式-常用元字符的基本使用
    html框架iframe与frameset的介绍
    常见form表单5种input输入类型
  • 原文地址:https://www.cnblogs.com/stst/p/4906909.html
Copyright © 2011-2022 走看看