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

2017-09-26  本文已影响0人  kwangxn

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

第一部分:课程重点笔记

首先 什么是设计模式:

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

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

1、依赖倒置原则

2、开放封闭原则

3、单一职责原则

4、替换原则

5、接口隔离原则

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

7、封装变化点

8、针对接口编程

设计模式的分类:

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

一、template Method

二、Strategy

三、Observer观察者模式

四、Bridge桥模式

第二部分:作业

本周作业题目如下:

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

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

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

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

思考:

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

其次,要求可以实现对进度条的实时通知,对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); //多态调用

//...

}

};

···

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

搞定!

上一篇 下一篇

猜你喜欢

热点阅读