收藏设计模式

Android设计模式:装饰器模式

2021-11-06  本文已影响0人  搬码人

定义

装饰器模式:动态地给一个对象添加额外的职责。

简介

代码实例

背景:某果园在采摘完水果之后要将其打包,通过顾客反馈需要在原有的包装上做其他的处理,比如防伪、加固、加急。

装饰框架
package 设计模式5

/**
 *@Description
 *@Author PC
 *@QQ 1578684787
 */

/**
 * 定义一个类 ->打包
 */
interface Bag{
    fun pack()
}
class BagImpl:Bag{
    override fun pack() {
    }

}

/**
 * 创建抽象装饰角色
 */
//维持一个抽象构件对象的引用 bag
abstract class BagDecorator(open val bag:Bag):Bag{
    override fun pack() {
        println("已经完成初步包装处理")
        bag.pack()
    }

}

/**
 * 创建具体装饰类
 */
class CheckedBagDecorator(override val bag: Bag):BagDecorator(bag){

    override fun pack() {
        super.pack()//调用原有的包装动作
        checked()//打印防伪标记
    }
    private fun checked(){
        println("--------------")
        println("打印防伪标记")
    }
}

class SpeedBagDecorator(override val bag: Bag):BagDecorator(bag){

    override fun pack() {
        super.pack()//调用原有的包装动作
        speed()//加急服务
    }
    private fun speed(){
        println("--------------")
        println("加急服务")
    }
}

/**
 * 测试
 */
fun main() {
    var bag: Bag = BagImpl()
    bag = CheckedBagDecorator(bag!!)
    bag = SpeedBagDecorator(bag!!)
    bag.pack()
}

测试结果

执行结果

优点

缺点

应用场景

参考文章:
Android设计模式-装饰者模式

上一篇 下一篇

猜你喜欢

热点阅读