目录

一、练习题

二、小结


一、练习题

1. 使用外观模式设计一个模块,该模块可以读取不同类型的文件中的数据,并将该数据转换成XML格式,然后将该数据展现出来。

类图

核心代码

package DesignPattern.facade

// 抽象外观类
public abstract class AbstractChange {
    public func change2XML(fileSrc: String, fileDesc: String): Unit
}

// 外观类
public class Change <: AbstractChange {
    private let fileReader: FileReader
    private let changeXML: ChangeXML
    private let fileWriter: FileWriter

    public init() {
        this.fileReader = FileReader()
        this.changeXML = ChangeXML()
        this.fileWriter = FileWriter()
    }

    public override func change2XML(fileSrc: String, fileDesc: String) {
        let read = this.fileReader.read(fileSrc)
        let xml = this.changeXML.getXML(read)
        this.fileWriter.writer(xml, fileDesc)
    }
}

// 子系统
private class FileReader {
    public func read(fileSrc: String): String {
        println("从${fileSrc}读取数据...")
        return """
        { 
            "msg": "success",
            "code": 200,
            "data": "{
                "userName": "钝子生",
                "age": 12,
                "sex": 1
            }"
        }
        """
    }
}

private class ChangeXML {
    public func getXML(data: String): String {
        println("原数据\n${data}")
        println("数据格式转换中...")
        println("转换完成")
        return """
        <response>
            <msg>success</msg>
            <code>200</code>
            <data>
                <userName>钝子生</userName>
                <age>12</age>
                <sex>1</sex>
            </data>
        </response>
    """
    }
}

private class FileWriter {
    public func writer(data: String, fileDesc: String) {
        println("把\n${data}\n数据保存文件到${fileDesc}")
    }
}

测试代码

package DesignPattern
import DesignPattern.facade.*

main(): Int64 {
    let xml = Change()
    xml.change2XML("./src/demo.json", "./src/demo_xml.xml")

    return 0
}

二、小结

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

Logo

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

更多推荐