C++ クラス設計の一般的な設計パターンは次のとおりです。 シングルトン パターン: クラスにインスタンスが 1 つだけあることを確認します。ファクトリ メソッド パターン: 具象クラスを指定せずにオブジェクトを作成し、サブクラスがインスタンス化プロセスを変更できるようにします。オブザーバー パターン: オブジェクト間の 1 対多の依存関係を定義します。1 つのオブジェクトが変更されると、他の依存オブジェクトが通知を受け取り、更新されます。
設計パターンは、ソフトウェア設計における一般的な問題に対する普遍的な解決策です。ソフトウェアを構築するための構造化された再利用可能なアプローチを提供し、コードの保守性、拡張性、柔軟性を向上させます。
C++ では、一般的に使用されるデザイン パターンには次のものがあります。
サンプルコード:
class Singleton { private: static Singleton* instance; Singleton(); public: static Singleton* getInstance(); void doSomething(); }; Singleton* Singleton::instance = nullptr; Singleton* Singleton::getInstance() { if (instance == nullptr) { instance = new Singleton(); } return instance; }
サンプルコード:
class Product { public: virtual void operation() = 0; }; class ConcreteProductA : public Product { public: void operation() override { // ... } }; class ConcreteProductB : public Product { public: void operation() override { // ... } }; class Factory { public: 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(); } };
サンプルコード:
class Observable { public: virtual void addObserver(Observer* observer) = 0; virtual void removeObserver(Observer* observer) = 0; virtual void notifyObservers() = 0; }; class Observer { public: virtual void update(Observable* observable) = 0; }; class ConcreteObservable : public Observable { private: std::vector<Observer*> observers; public: void addObserver(Observer* observer) override { observers.push_back(observer); } void removeObserver(Observer* observer) override { observers.erase(std::remove(observers.begin(), observers.end(), observer), observers.end()); } void notifyObservers() override { for (auto observer : observers) { observer->update(this); } } void doSomething() { // ... notifyObservers(); } }; class ConcreteObserverA : public Observer { public: void update(Observable* observable) override { // ... } }; class ConcreteObserverB : public Observer { public: void update(Observable* observable) override { // ... } };
以上がC++ クラス設計で一般的に使用される設計パターンは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。