目录

一、练习题

二、小结


一、练习题

1. 有一款商务信息查询模块的开发任务,希望能够松耦合的方式向原有系统增加身份验证功能,试着使用代理模式来实现。

类图

核心代码

package DesignPattern.proxy

// 抽象主题
public interface Search {
    func doSearch(id: String, key: String): String
}

// 具体主题
class RealSearch <: Search {
    public override func doSearch(id: String, key: String): String {
        println("用户: ${id}, 使用关键字: ${key}, 查询信息!")
        return "赛罗奥特曼的信息"
    }
} 

// 具体业务类
class AccessValidator {
    public func validate(id: String): Bool {
        println("在数据库中验证用户: ${id}是否是合法用户?")
        if (id == "1001") {
            println("${id}身份合法")
            return true
        } else {
            println("${id}身份非法")
            return false
        }
    }
}

// 代理对象
public class SearchProxy <: Search {
    private let realSearch = RealSearch()
    private var accessValidator: AccessValidator = AccessValidator()

    public override func doSearch(id: String, key: String) {
        // 身份验证
        if (this.accessValidator.validate(id)) {
            return realSearch.doSearch(id, key)
        } else {
            // 身份不合法,返回空字符串
            return ""
        }
    }
}

测试代码

package DesignPattern
import DesignPattern.proxy.*

main(): Int64 {
    let search = SearchProxy()
    let info = search.doSearch("1001", "赛罗")
    println(info)

    return 0
}

二、小结

本章为大家详细的介绍了仓颉设计模式中代理模式练习题的内容,下一章,为大家带来职责链模式的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉设计模式有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐