小小菜学设计模式之 文件名管理器 ver 1.0
2010-10-24 17:41
211 查看
买了本大话设计模式,看的饶有兴致,于是也想来实践一下. 做个什么东西玩玩
想到自己文件(尤其的音乐文件)很多,有时候这些文件的文件名又是没有规范的,
于是想到做一个文件名管理器.
顺便也来练练设计模式.
以循序渐进的方式来吧.
先给出我想实现的第一版的功能需求:
1, 用一个列表框,来加载当前加载到程序中的文件的文件名,
2,添加不同种类的编号,如 01,02格式或1,2,3,或001,002等格式,添加为前缀或者后缀形式
3, 主面板使用常见编号方式以及更改某一文件属性形式
4,音乐文件因为包含很多特殊信息如ID3信息,放在第二版制作用一个选项卡来占位
第一版我打算不用任何设计模式,只按目前直觉上的一些过程化设计来做.
首先是画界面(小菜一个,WPF也是刚刚接触,基础基本为零哈,见谅见谅)
代码
当点击“启用编号”复选框后 “将更改批量修改到文件” “编号位数”“前后缀等” 也设置为可用,
这个只需要checkbox的一个click事件,在里面判断一下就可以解决。很简单 不贴代码了
至此,整个程序的初版功能就到此为止,虽然简单,但是也花了我好几个晚上的时间,看来还需大大努力啊.效果如下图
但是这个程序还有非常严重的问题
代码异常 "脏乱差" ,没有任何架构和设计可言,仅仅是简单的实现了我在第一版需求的功能而已(并且还有不少bug ;D),
如果我现在想要增加一些功能
比如:
以不同方式的编号来给文件夹改名,例如 带括弧的编号,
以保留原始文件名的方式给文件加上编号.
另外还有保留的那块音乐文件信息的处理
如果将所有代码都写到主文件里面
这将是一件很恐怖的事情.
因此这周我将这个程序用一些简单的设计模式来重构,以便日后来扩展它的功能
想到自己文件(尤其的音乐文件)很多,有时候这些文件的文件名又是没有规范的,
于是想到做一个文件名管理器.
顺便也来练练设计模式.
以循序渐进的方式来吧.
先给出我想实现的第一版的功能需求:
1, 用一个列表框,来加载当前加载到程序中的文件的文件名,
2,添加不同种类的编号,如 01,02格式或1,2,3,或001,002等格式,添加为前缀或者后缀形式
3, 主面板使用常见编号方式以及更改某一文件属性形式
4,音乐文件因为包含很多特殊信息如ID3信息,放在第二版制作用一个选项卡来占位
第一版我打算不用任何设计模式,只按目前直觉上的一些过程化设计来做.
首先是画界面(小菜一个,WPF也是刚刚接触,基础基本为零哈,见谅见谅)
代码
//批量更改 private void btnBatch_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(txtFileName.Text)) { MessageBox.Show("请先指定一个文件名"); return; } if (MessageBox.Show("该功能将以您输入的文件名为标准 为所选定的文件加上您指定的前缀或后缀","注意!",MessageBoxButton.YesNo)==MessageBoxResult.No) { return; } string setDigit=""; for (int i = 0; i < int.Parse(txtDigit.Text); i++) { setDigit += "0"; } if (rdoPrefix.IsChecked == true) { //以前缀形式添加 for (int i = 0; i < curAddedFiles.Count; i++) { curAddedFiles[i].MoveTo(curFileInf.DirectoryName + "\\"+ string.Format("{0:" + setDigit + "} ", i) + txtFileName.Text+curFileInf.Extension); //↑ 拼接一段格式化字符串 比如如果你设置的是两位那么拼接的结果就是 ("{0:00"} ", i) 那么文件名也将显示为 01,02,下同 } } else if (rdoPostfix.IsChecked == true) { //以后缀形式添加 for (int i = 0; i < curAddedFiles.Count; i++) { string name = curFileInf.DirectoryName + "\\" + txtFileName.Text + string.Format(" {0:" + setDigit + "}", i) + curFileInf.Extension; curAddedFiles[i].MoveTo(name); } } }
当点击“启用编号”复选框后 “将更改批量修改到文件” “编号位数”“前后缀等” 也设置为可用,
这个只需要checkbox的一个click事件,在里面判断一下就可以解决。很简单 不贴代码了
至此,整个程序的初版功能就到此为止,虽然简单,但是也花了我好几个晚上的时间,看来还需大大努力啊.效果如下图
但是这个程序还有非常严重的问题
代码异常 "脏乱差" ,没有任何架构和设计可言,仅仅是简单的实现了我在第一版需求的功能而已(并且还有不少bug ;D),
如果我现在想要增加一些功能
比如:
以不同方式的编号来给文件夹改名,例如 带括弧的编号,
以保留原始文件名的方式给文件加上编号.
另外还有保留的那块音乐文件信息的处理
如果将所有代码都写到主文件里面
这将是一件很恐怖的事情.
因此这周我将这个程序用一些简单的设计模式来重构,以便日后来扩展它的功能
相关文章推荐
- 小小菜学设计模式之 文件名管理器 ver 1.1 解耦
- 设计模式基础4--常量数据管理器
- Java之------单机版书店管理系统(设计思想和设计模式系列八)登录模块
- 设计模式 命令模式 之 管理智能家电
- 设计模式 命令模式 之 管理智能家电
- Java之------单机版书店管理系统(设计思想和设计模式系列四)图书模块
- 设计模式--迭代器And组合模式(管理良好的集合)
- 会话管理-cookie,session,禁用cookie的URL重写,token的单态设计模式,异常抛出,UUID,MD5,base64编码
- Java编程应该了解的事 - 设计模式、软件工程、项目管理
- 项目管理大法归档 - 思维导图、原型工具、接口测试、设计模式、版本管理、单元测试、持续集成、代码审查、Bug 跟踪
- 设计模式 命令模式 之 管理智能家电
- 持久层设计与资源管理模式笔记
- Java之------单机版书店管理系统(设计思想和设计模式系列七)库存模块
- Java 设计模式之状态管理
- 设计模式 命令模式 之 管理智能家电
- Java之------单机版书店管理系统(设计思想和设计模式系列二)用户模块
- Java之------单机版书店管理系统(设计思想和设计模式系列五)进货模块
- 设计模式系列:小小总结
- 设计模式:广告管理系统的UML分析与设计
- C#设计模式之简单工厂模式(资金簿银行帐号管理)