C++面向对象编程分享09----20160429_设计模式_李楚煌
来源:互联网 发布:js文件 编辑:程序博客网 时间:2024/05/16 11:11
namespace {public MainForm(){InitializeComponent();string srcSplFilename = null; //记录源文件路径string desSplFilename = null; //记录存储路}private void btnSource_Click(object sender, EventArgs e){OpenFileDialog openDlg = new OpenFileDialog();if (openDlg.ShowDialog() == DialogResult.OK && openDlg.FileName != string.Empty){srcSplFilename = openDlg.FileName; //记录源文件的存储路径}}if (folderDlg.ShowDialog() == DialogResult.OK){{//以源文件路径对应的字符串和Open文件打开模式初始化FileStream文件流实例splitFileStream = new FileStream(srcSplFilename, FileMode.Open);//以FileStream文件流来初始化BinaryReader文件流实例splitFileReader = new BinaryReader(splitFileStream);//获取分割后所得到的小文件的总数desFileSize = int.Parse(cboSize.SelectedItem.ToString()) * 1024 ;desFileCount = (int)(splitFileStream.Length / desFileSize);if (splitFileStream.Length % desFileSize != 0)desFileCount++;//数组desExtra的最后一个元素为源文件的扩展名,也即新文件扩展名desExtra = srcSplFilename.Split('.');//获取源文件的文件名filename = srcSplFilename.Substring(srcSplFilename.LastIndexOf("\\") + 1, srcSplFilename.LastIndexOf(".") - (srcSplFilename.LastIndexOf("\\") + 1));//设置进度条空间的Maximum属性progBarSplit.Maximum = desFileCount - 1;//循环处理,依次将大文件分割成多个小文件While(desFileCount 1= 0){//确定小文件的文件名称string desFileName = @desSplFilename + @"\" + filename + i.ToString().PadLeft(4, '0') + "." + desExtra[desExtra.Length - 1];//关闭相应目的文件流实例desFileStream.Close();}//关闭源文件流实例splitFileReader.Close();splitFileStream.Close();}catch (Exception ex){MessageBox.Show(ex.ToString());}srcPath=openDlg.FileName.Split(@"\".ToCharArray());for (i = 0; i < srcPath.Length - 1; i++){strTemp = strTemp + srcPath[i] + @".";}srcMerFilename = strTemp; //获取文件所在目录filename = srcPath[srcPath.Length - 1].Split(@".".ToCharArray());for (i = 0; i < filename.Length - 1; i++){fileName = fileName + filename[i] + @".";}fileName = fileName.Substring(0,fileName.Length - 1); //获得文件名fileExtra = filename[filename.Length - 1]; //获得文件扩展}private void btnMergDes_Click(object sender, EventArgs e){FolderBrowserDialog folderDlg = new FolderBrowserDialog();folderDlg.Description = "请选择目的文件存放的文件夹";private void btnMerge_Click(object sender, EventArgs e){string filename = "";string[] arrFileNames; //记录所有分割后得到的所有小文件的名称if (srcReader != null)srcReader.Close();txtMerSrc.Clear();txtMergDes.Clear();srcMerFilename = null;desMerFilename = null;fileName = "";fileExtra = "";}}}
设计模式分为:策略模式、观察者模式、装饰模式、桥模式、门面模式、代理模式、原型模式
而方法有模板方法、工厂方法,
这些的内核在于我之前分享的C++的三把大刀:复合、继承、委托:
http://blog.csdn.net/a759460146/article/details/50914027
今天先讲讲创建型模式:
第一个: Simple Factory Pattern
一个软件提供多个外观不同的按钮,按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性
从而使得它们可以呈现不同的外观,
如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,
并提供一个调用方便的方法,把该参数传入方法返回一个相应的按钮对象,这就是简单工厂模式。
在简单工厂模式中,可以根据参数的不同返回不同类的实例。
简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
将对象的创建和对象本身业务处理分离可以降低系统的耦合度,使得两者修改起来相对容易。
在调用工厂类的工厂方法时,可通过类名直接调用,而且只需要传入一个简单的参数即可,在
实际开发中,还可以在调用时将所传入的参数保存在XML等格式的配置文件中,
修改参数时不用修改任何源代码。
这是基础的设计模式,后续会有所补充。
1 0
- C++面向对象编程分享09----20160429_设计模式_李楚煌
- C++面向对象编程分享----20160301_李楚煌
- C++面向对象编程分享02----20160311_李楚煌
- C++面向对象编程分享03----20160317_李楚煌
- C++面向对象编程分享04----20160322_李楚煌
- C++面向对象编程分享05----20160326_李楚煌
- C++面向对象编程分享06----20160404_李楚煌
- C++面向对象编程分享07----20160407_李楚煌
- C++面向对象编程分享08----20160422_李楚煌
- 设计模式_面向对象设计原则简述
- 设计模式_面向对象的常见设计原则概述
- 面向对象_链式编程
- 设计模式_可复用面向对象软件的基础- 观后感
- 面向对象_设计模式的四大原则
- 黑马程序员_面向对象1_(封装、构造函数、this、static、单例设计模式)
- JAVASE_06天_@面向对象_构造和静态和单例设计模式
- 面向对象设计_C++_类
- 敏捷软件开发_面向对象设计模式(创建型模式)单件(Singleton)模式
- 算法的泛化过程
- centos7编译安装mysql之2
- Windows下Android开发环境配置
- maven设置默认JDK版本
- Java内存模型-jsr133规范介绍
- C++面向对象编程分享09----20160429_设计模式_李楚煌
- ThreaLocal内存泄露的问题
- 在CentOS 6.X 上面安装 Python 2.7.X
- java泛型详解
- 设计和实现一个简单的hdfs的备份恢复与容灾系统(1)
- AS常用插件-持续更新
- 64位和32位的寄存器和汇编的比较
- 找倍数
- 二分图的最大匹配:匈牙利算法