您的位置:首页 > 其它

小小菜学设计模式之 文件名管理器 ver 1.0

2010-10-24 17:41 211 查看
买了本大话设计模式,看的饶有兴致,于是也想来实践一下. 做个什么东西玩玩

想到自己文件(尤其的音乐文件)很多,有时候这些文件的文件名又是没有规范的,

于是想到做一个文件名管理器.

顺便也来练练设计模式.

以循序渐进的方式来吧.

先给出我想实现的第一版的功能需求:

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),

如果我现在想要增加一些功能

比如:

以不同方式的编号来给文件夹改名,例如 带括弧的编号,

以保留原始文件名的方式给文件加上编号.

另外还有保留的那块音乐文件信息的处理

如果将所有代码都写到主文件里面

这将是一件很恐怖的事情.

因此这周我将这个程序用一些简单的设计模式来重构,以便日后来扩展它的功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: