開放封閉原則:類的改動是通過增加**實現的,不是修改源**。
依賴倒置原則:依賴於抽象(通過純虛函式創造介面)
定義:保證乙個類只有乙個例項,並提供乙個訪問他的全域性訪問點。
可以分為懶漢式和餓漢式。
1.需要靜態指標(多個物件共享一塊記憶體)
2.構建函式私有(保證不能在類的外部建立物件)
3.提供靜態成員函式用於建立物件
#include#includeusing namespace std;
class single
public:
static single *getinstance() //提供靜態成員函式用於建立物件
return mintance;
} int getcount()
void release() }
}; single *single ::minstance = null; //懶漢式
// single *single ::minstance = new single //餓漢式
int single :: count = 0;
int mian()
;class add : public operator
}; class sub : public operator
};class factory
if(n == "減")
return opt;
}};int main()
工廠方法類的核心是乙個抽象工廠類,乙個工廠只生產一種產品
具體工廠類都有共同的介面
當系統擴充套件需要新增新的產品物件時,僅僅需要新增乙個具體物件以及乙個具體工廠物件,原有工廠物件不需要進行任何修改,也不需要修改客戶端,很好的符合了「開放-封閉」原則。
#include using namespace std;
class fruit;
};
class banana : public fruit
};class pair : public fruit
};class factory ;
}; class bananafactory : public factory
};int main()
抽象工廠模式可以向客戶端提供乙個介面,使得客戶端在不必指定產品的具體型別的情況下,能夠建立多個產品族的產品物件。
乙個工廠可以生產一系列的產品
優點:1.隔離了具體類的生產;
2.當乙個產品族中的多個物件被設計成一起工作時,能保證客戶端始終只使用同乙個產品族中的物件;
3.很方便的增加新的具體工廠和產品族;
缺點:增加新的產品等級結構時很複雜;
#include using namespace std;
class cpu //抽象基類
; class intel : public cpu
};class arm : public cpu
};class harddisk //抽象基類 ;
class xijie : public harddisk
};
class samsung : public harddisk
};
class factory
;
class dell : public factory
harddisk *createharddisk()
};class acer : public factory
harddisk *createharddisk()
};class computer
void work()
};int main()
簡單工廠 :用來生產同一等級結構中的任意產品。(對於增加新的產品,無能為力)
工廠方法 :用來生產同一等級結構中的固定產品。(支援增加任意產品)
抽象工廠 :用來生產不同產品族的全部產品。(對於增加新的產品,無能為力;支援增加產品族)
適用情況:乙個物件的構建比較複雜,將乙個物件的構建和物件的表示進行分離。
factory模式:不考慮物件的組裝過程,而直接生成乙個我想要的物件。
builder模式:先乙個個的建立物件的每乙個部件,再統一組裝成乙個物件。
factory模式所解決的問題:工廠生產產品。
builder模式所解決的問題:工廠控制產品生成器組裝各個部件的過程,然後從產品生成器中得到產品。
#include using namespace std;
class door
void show()
};class window
void show()
};class house
void show()
};class builder
};class common : public builder
};class villa : public builder
};int main()
採取複製原型物件的方法來建立物件的例項。
由原型物件自身建立目標物件。
目標物件是原型物件的乙個轉殖。
根據物件轉殖深度層次的不同,有淺度轉殖與深度轉殖。
#include #include using namespace std;
class person
; class student : public person
person *clone()
void show()
};int main()
設計模式 建立型模式 原型模式
1 原型模式 prototype模式 是指 用原型例項指定建立物件的種類,並且通過拷貝這些原型,建立新的物件 2 原型模式是一種建立型設計模式,允許乙個物件再建立另外乙個可定製的物件,無需知道如何建立的細節 3 工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型...
設計模式 建立型模式
建立型模式 與物件的建立有關。1 簡單工廠模式 靜態工廠 簡單工廠關聯具體類,通過簡單工廠來建立具體的類。封裝變化到簡單工廠裡面去。工廠類 具體類 2 工廠模式 抽象工廠 具體工廠 具體類 要是新增新的類,只需要擴充套件就可以了。他們對外的行為是一致的。3 抽象工廠 抽象工廠 具體工廠 具體類 具體...
設計模式 建立型模式
建立型模式 工廠方法 核心 客戶端呼叫具體的工廠,讓工廠去決定例項化哪個具體的類。核心 為工廠類建立對應的具體的類,表現為和對應的具體類的依賴關係。抽象工廠類 inte ce productfactory 具體a工廠 class concreteproductfactorya productfact...