シングルトン モード: 関数のオーバーロードを通じて、シングルトン インスタンスにさまざまなパラメーターを提供します。ファクトリ パターン: 関数の書き換えを通じてさまざまなタイプのオブジェクトを作成し、作成プロセスを特定の製品クラスから切り離します。
#C での関数のオーバーロードと書き換えにおけるシングルトン モードとファクトリ モードの適用
シングルトン モード関数のオーバーロード
シングルトン モードは、関数のオーバーロードを通じて実装できます。オーバーロードされた関数には異なるパラメーター リストがあるため、異なるインスタンスが返されます。class Singleton { public: static Singleton* getInstance() { if (instance_ == nullptr) { instance_ = new Singleton(); } return instance_; } static Singleton* getInstance(int arg) { if (instance_ == nullptr) { instance_ = new Singleton(arg); } return instance_; } private: Singleton() = default; Singleton(int arg); static Singleton* instance_; };
実際的なケース
2 つのシングルトン オブジェクトを作成します。1 つはパラメータ付き、もう 1 つはパラメータなしです。int main() { Singleton* instance1 = Singleton::getInstance(); Singleton* instance2 = Singleton::getInstance(10); // 检查两个实例是否相同 if (instance1 == instance2) { std::cout << "两个实例相同" << std::endl; } else { std::cout << "两个实例不相同" << std::endl; } }
関数の書き換え
ファクトリ モードは、関数の書き換えによって実装できます。書き換えられた関数は、実装が異なると異なるオブジェクトを作成します。class Product { public: virtual ~Product() {} }; class ConcreteProductA : public Product { // ... }; class ConcreteProductB : public Product { // ... }; class Factory { public: virtual ~Factory() {} virtual Product* createProduct() = 0; }; class ConcreteFactoryA : public Factory { public: Product* createProduct() override { return new ConcreteProductA(); } }; class ConcreteFactoryB : public Factory { public: Product* createProduct() override { return new ConcreteProductB(); } };
実際的なケース
2 つのファクトリ オブジェクトを作成し、各オブジェクトは異なる製品タイプを作成します。rree
以上がC++ 関数のオーバーロードと書き換えにおけるシングルトン モードとファクトリ モードの適用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。