一次编程比赛的设计

    xiaoxiao2025-03-26  14

    在一次编程比赛中,题目要求是对字符串进行排序:

    排序规则:

    1) 数字按数字大小排序,0多的排在前面;例: 01 1 2 10 001  ->  001 01 1 2 10

    2) 字母,则AA排在aa前面,大写字母在前;例:Aa b a B  Cd c -> Aa a B b Cd c

    3)字母优先级最低,其次是数字,其它字符按ACSII码的顺序排列。

    一开始拿到这个问题,我首先想到的是如何进行架构设计。这个设计过程经历了两个阶段。

    第一阶段设计:

    将这一次排序过程分解成三个部分:

    输入 ->  处理  ->  输出

    然后分别将这三个处理进行抽象化,但这个封装变化出现了点问题,三个处理过程怎么进行抽象化,怎么将这三个抽象化整合呢?

    第二阶段设计:

    对第一阶段提出的问题,将一次排序过程抽象化,相应的输入、处理、输出也抽象化,以属性组的形式展示:

    输入:(浏览器输入,文件导入)

    处理:(小数据量排序算法, 大数据量排序算法)

    输出:(浏览器输出,文件导出)

    排序过程为一个关系,一次排序过程则为一个元组

    输入处理输出浏览器输入小数据量排序算法浏览器输出浏览器输入小数据量排序算法文件导出文件导入小数据量排序算法文件导出文件导入大数据量排序算法文件导出

    一次排序过程桥接这三个处理,封装变化,封装三个处理之间的消息,这样就使得架构可以对扩展开放

    但这里会有个问题:处理依赖输入处理的返回结果,导致这种变化不是那么固定,有一定的耦合

    转载请注明原文地址: https://ju.6miu.com/read-1297426.html
    最新回复(0)