首先看一段程式,目的是完成一個電腦的計算,
面向過程的寫法
這樣出來的程式每次都需要修改,比如我要添加一個取平方根的操作,需要修改程式,如果在增加,還是繼續修改。
面向對象和面向過程的對比就不用多說了吧,借用書上的一句話
通過繼承封裝和多态把程式的耦合度降低,使用設計模式使程式更靈活更加容易複用。
第一步 剝離業務,現在程式都是混在一起的,将業務剝離出來
建立類Operaton
修改main函數
這樣實作了業務邏輯的分離,但是還是沒解決剛才的問題,如果再添加操作或業務還需要再修改業務類檔案。
第二步 使用簡單工廠
工廠模式專門負責将大量有共同接口的類執行個體化。工廠模式可以動态決定将哪一個類執行個體化,不必事先知道每次要執行個體化哪一個類。
看一下類圖的描述

進而得到的幾個檔案Operaton.cpp,Operaton.h,OperatonAdd.cpp,OperatonAdd.h,OperatonSub.cpp,OperatonSub.h,OperatonMul.cpp,OperatonMul.h,OperatonDiv.cpp,OperatonDiv.h
Operaton.h
class Operaton
{
public:
Operaton();
virtual ~Operaton();
int numA;
int numB;
virtual int getResult() = 0;
};
Operaton.cpp
#include "stdafx.h"
#include "Operaton.h"
Operaton::Operaton(){
}
Operaton::~Operaton(){
OperatonAdd.h
OperatonAdd.cpp
OperatonSub.h
OperatonSub.cpp
OperatonMul.h
OperatonMul.cpp
OperatonDiv.h
OperatonDiv.cpp
OperatonFactory.h
OperatonFactory.cpp
在這裡操作傳回的對象,将業務分的更細緻,main的代碼可改為
這樣,如果繼續增加比如求平方,取餘就可以不修改main中的内容了。當然現在還沒有完全移除if和switch,在下面的曆程中會逐一講到。