Boolan C++设计模式第一周心得笔记

本周笔记分为两个部分:一为课程重点笔记,二为关于作业的思考

第一部分:课程重点笔记

首先 什么是设计模式:

Boolan C++设计模式第一周心得笔记_第1张图片

软件设计的金科玉律:复用


Boolan C++设计模式第一周心得笔记_第2张图片
Boolan C++设计模式第一周心得笔记_第3张图片

以下整理了面向对象设计的几大原则:

1、依赖倒置原则

Boolan C++设计模式第一周心得笔记_第4张图片

2、开放封闭原则


Boolan C++设计模式第一周心得笔记_第5张图片

3、单一职责原则


Boolan C++设计模式第一周心得笔记_第6张图片

4、替换原则


Boolan C++设计模式第一周心得笔记_第7张图片

5、接口隔离原则


Boolan C++设计模式第一周心得笔记_第8张图片

6、优先使用对象组合原则


Boolan C++设计模式第一周心得笔记_第9张图片

7、封装变化点


Boolan C++设计模式第一周心得笔记_第10张图片

8、针对接口编程


Boolan C++设计模式第一周心得笔记_第11张图片

设计模式的分类:


Boolan C++设计模式第一周心得笔记_第12张图片


Boolan C++设计模式第一周心得笔记_第13张图片

对于代码的重构,有以下几种关键的技法:


Boolan C++设计模式第一周心得笔记_第14张图片

一、template Method


Boolan C++设计模式第一周心得笔记_第15张图片


Boolan C++设计模式第一周心得笔记_第16张图片
Boolan C++设计模式第一周心得笔记_第17张图片
Boolan C++设计模式第一周心得笔记_第18张图片

二、Strategy


Boolan C++设计模式第一周心得笔记_第19张图片
Boolan C++设计模式第一周心得笔记_第20张图片
Boolan C++设计模式第一周心得笔记_第21张图片
Boolan C++设计模式第一周心得笔记_第22张图片

三、Observer观察者模式


Boolan C++设计模式第一周心得笔记_第23张图片
Boolan C++设计模式第一周心得笔记_第24张图片
Boolan C++设计模式第一周心得笔记_第25张图片
Boolan C++设计模式第一周心得笔记_第26张图片

四、Bridge桥模式


Boolan C++设计模式第一周心得笔记_第27张图片
Boolan C++设计模式第一周心得笔记_第28张图片
Boolan C++设计模式第一周心得笔记_第29张图片
Boolan C++设计模式第一周心得笔记_第30张图片

第二部分:作业

本周作业题目如下:

考虑一个文件分割器的设计。MainForm为界面类,收集用户输入的文件路径,和分割数量。FileSplitter为实现文件分割的类型。其中Split( )实现文件分割算法。

1.要求为Split( )支持多种文件分割算法(至少3种),在MainForm中灵活切换多种算法。

2.在Split( )分割过程中,实现对进度条的实时通知,即对progressBar的赋值。

3.使用松耦合面向对象设计方法和思想,无需编写具体算法实现,可使用伪码表示设计。

思考:

首先,作业要求支持多种文件分割算法,可以灵活切换。根据本周课程内容,与所讲的策略模式相符合。

Boolan C++设计模式第一周心得笔记_第31张图片

其次,要求可以实现对进度条的实时通知,对progressBar进行赋值。与所讲的观察者模式贴合。

嗯,再复习一遍策略模式和观察者模式吧....

策略模式详解代码如下:

···

class TaxStrategy{

public:

virtual double Calculate(const Context& context)=0;

virtual ~TaxStrategy(){}

};

class CNTax : public TaxStrategy{

public:

virtual double Calculate(const Context& context){

//***********

}

};

class USTax : public TaxStrategy{

public:

virtual double Calculate(const Context& context){

//***********

}

};

class DETax : public TaxStrategy{

public:

virtual double Calculate(const Context& context){

//***********

}

};

//扩展

//*********************************

class FRTax : public TaxStrategy{

public:

virtual double Calculate(const Context& context){

//.........

}

};

class SalesOrder{

private:

TaxStrategy* strategy;

public:

SalesOrder(StrategyFactory* strategyFactory){

this->strategy = strategyFactory->NewStrategy();

}

~SalesOrder(){

delete this->strategy;

}

public double CalculateTax(){

//...

Context context();

double val =

strategy->Calculate(context); //多态调用

//...

}

};

···

在详细了解了策略模式后,将策略模式与观察者结合起来就可以完成本周作业

搞定!

你可能感兴趣的:(Boolan C++设计模式第一周心得笔记)