一、练习题

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
}

二、小结

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

Logo

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

更多推荐