跟我一起学“仓颉”设计模式-代理模式练习题
本章为大家详细的介绍了仓颉设计模式中代理模式练习题的内容。
·
目录
一、练习题
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
}
二、小结
本章为大家详细的介绍了仓颉设计模式中代理模式练习题的内容,下一章,为大家带来职责链模式的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉设计模式有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!
更多推荐



所有评论(0)