软件设计模式的种类
GoF提出的设计模式有23个,包括:
创建型(Creational)模式: 如何创建对象;
结构型(Structural )模式: 如何实现类或对象的组合;
行为型(Behavioral)模式: 类或对象怎样交互以及怎样分配职责。
设计模式目前种类: GoF的23种 + “简单工厂模式” = 24种。
设计模式的基础是:多态。
面向对象设计原则
面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模
式中,它们是从许多设计方案中总结出的指导性原则。
原则的目的: 高内聚,低耦合
面向对象设计原创表
开闭原则
开闭原则:对扩展开放,对修改源代码关闭。类的改动是通过增加代码进行的,而不是修改源代码
例子:计算器±*/,如需加入%取模运算,不需要修改之前的代码,只是添加代码
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
//开闭原则 对扩展开放,对修改关闭,增加功能是通过增加代码来实现,而不是去修改源代码
//写一个抽象类
class AbstractCaculator{
public:
virtual int getResult() = 0;
virtual void setOperatorNumber(int a, int b) = 0;
};
//加法计算器类
class PlusCaculator :public AbstractCaculator{
public:
virtual void setOperatorNumber(int a, int b){
this->mA = a;
this->mB = b;
}
virtual int getResult(){
return mA + mB;
}
public:
int mA;
int mB;
};
//减法计算器
class MinuteCaculator :public AbstractCaculator{
public:
virtual void setOperatorNumber(int a, int b){
this->mA = a;
this->mB = b;
}
virtual int getResult(){
return mA - mB;
}
public:
int mA;
int mB;
};
//乘法计算器
class MultiplyCaculator :public AbstractCaculator{
public:
virtual void setOperatorNumber(int a, int b){
this->mA = a;
this->mB = b;
}
virtual int getResult(){
return mA * mB;
}
public:
int mA;
int mB;
};
//取模计算器 通过增加代码来实现
class ModulusCaculator :public AbstractCaculator{
public:
virtual void setOperatorNumber(int a, int b){
this->mA = a;
this->mB = b;
}
virtual int getResult(){
return mA % mB;
}
public:
int mA