工廠模式(Factory Pattern)是一種創(chuàng)建型設計模式,它提供了一種在不指定具體類的情況下創(chuàng)建對象的方法。工廠模式通常用于創(chuàng)建具有相似特性的對象,例如在同一個抽象類或接口下的多個子類。工廠模式可以與其他設計模式一起使用,以實現更復雜的功能和結構。
單例模式確保一個類只有一個實例,并提供一個全局訪問點。工廠模式可以與單例模式結合,使得工廠類也成為單例。這樣,整個應用程序中只有一個工廠實例,負責創(chuàng)建所需的對象。
class SingletonFactory {
public:
static SingletonFactory& getInstance() {
static SingletonFactory instance;
return instance;
}
Product* createProduct(ProductType type) {
// 根據type創(chuàng)建相應的Product對象
}
private:
SingletonFactory() {}
SingletonFactory(const SingletonFactory&) = delete;
SingletonFactory& operator=(const SingletonFactory&) = delete;
};
策略模式定義了一系列算法,并將每個算法封裝在一個具有共同接口的類中。工廠模式可以用于創(chuàng)建這些策略類的實例。當需要在運行時切換策略時,工廠模式可以根據配置或條件創(chuàng)建相應的策略對象。
class StrategyFactory {
public:
Strategy* createStrategy(StrategyType type) {
switch (type) {
case StrategyType::A:
return new StrategyA();
case StrategyType::B:
return new StrategyB();
default:
return nullptr;
}
}
};
適配器模式用于將一個類的接口轉換為客戶端期望的另一個接口。工廠模式可以與適配器模式結合,創(chuàng)建適配器對象,然后將適配器對象傳遞給客戶端。這樣,客戶端可以使用適配器對象,而無需關心底層的實現細節(jié)。
class AdapterFactory {
public:
Adapter* createAdapter(AdapterType type) {
switch (type) {
case AdapterType::A:
return new AdapterA(new AdapteeA());
case AdapterType::B:
return new AdapterB(new AdapteeB());
default:
return nullptr;
}
}
};
建造者模式用于將一個復雜對象的構建與其表示分離,使得同樣的構建過程可以創(chuàng)建不同的表示。工廠模式可以與建造者模式結合,創(chuàng)建建造者對象,然后將建造者對象傳遞給客戶端。這樣,客戶端可以使用建造者對象來構建復雜對象。
class BuilderFactory {
public:
Builder* createBuilder(BuilderType type) {
switch (type) {
case BuilderType::A:
return new ConcreteBuilderA();
case BuilderType::B:
return new ConcreteBuilderB();
default:
return nullptr;
}
}
};
總之,工廠模式可以與其他設計模式結合,以實現更復雜的功能和結構。在實際項目中,根據需求選擇合適的設計模式組合,以提高代碼的可維護性、可擴展性和可重用性。