跟我一起学“仓颉”设计模式-享元模式练习题
本章为大家详细的介绍了仓颉设计模式中享元模式练习题的内容。
·
一、练习题
1. 使用享元模式模拟共享网络设备的设备原理。
类图

核心代码
package DesignPattern.flyweight
import std.collection.*
// 抽象享元类
public abstract class NetworkDevice {
public func connect(port: Port) {
println("网络设备: ${this.getName()}, 端口号: ${port.port}")
}
public func getName(): String
}
// 具体享元类
public class Switch <: NetworkDevice {
public override func getName() {
return "交换机"
}
}
public class Router <: NetworkDevice {
public override func getName() {
return "路由器"
}
}
// 享元工厂类
public class NetworkFactory {
private static let factory: NetworkFactory = NetworkFactory()
private static var map: HashMap<String, NetworkDevice>
static init() {
map = HashMap<String, NetworkDevice>()
let router = Router()
let switch = Switch()
map.add("路由器", router)
map.add("交换机", switch)
}
public static func getFactory(): NetworkFactory {
return factory
}
public func getNetworkDevice(name: String): NetworkDevice {
return map[name]
}
}
public class Port{
public Port(var port: Int64) {}
}
测试代码
package DesignPattern
import DesignPattern.flyweight.*
main(): Int64 {
let factory = NetworkFactory.getFactory()
let router1 = factory.getNetworkDevice("路由器")
let router2 = factory.getNetworkDevice("路由器")
let router3 = factory.getNetworkDevice("路由器")
let switch1 = factory.getNetworkDevice("交换机")
let switch2 = factory.getNetworkDevice("交换机")
router1.connect(Port(8888))
router2.connect(Port(9999))
router3.connect(Port(4869))
switch1.connect(Port(114514))
switch2.connect(Port(8848))
return 0
}
二、小结
本章为大家详细的介绍了仓颉设计模式中享元模式练习题的内容,下一章,为大家带来代理模式的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉设计模式有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!
更多推荐
所有评论(0)