C 静的関数を使用して、オブジェクトを作成するためのインターフェイスを定義し、作成ロジックをサブクラスに延期するファクトリ メソッド パターンを実装することができます。 C では、クラスのインスタンス化を必要とせず、さまざまなタイプのオブジェクトを簡単に作成できる静的関数を使用してファクトリ メソッド パターンを実装できます。ファクトリ メソッド パターンは、オブジェクト作成ロジックと具体的な形状クラスを分離するのに役立ち、オブジェクトの動的な作成を可能にし、将来新しい形状タイプを簡単に追加できる拡張性を提供します。
#C 静的関数を使用してファクトリ メソッド パターンを実装する
ファクトリ メソッド パターンは、オブジェクトを作成するための設計パターンです。作成ロジックをサブクラスに延期しながら、さまざまなオブジェクトを作成するためのインターフェイスを定義します。 C の静的関数を使用して、ファクトリ メソッド パターンを実装できます。静的関数は、特定のオブジェクトに関連付けられていないメンバー関数であり、クラスをインスタンス化せずに直接呼び出すことができます。コード サンプル:
class Shape { public: virtual Shape* clone() const = 0; }; class Circle : public Shape { public: Shape* clone() const override { return new Circle(*this); } }; class Rectangle : public Shape { public: Shape* clone() const override { return new Rectangle(*this); } }; class ShapeFactory { public: static Shape* createShape(const std::string& type) { if (type == "circle") { return new Circle; } else if (type == "rectangle") { return new Rectangle; } else { return nullptr; } } }; int main() { Shape* circle = ShapeFactory::createShape("circle"); Shape* rectangle = ShapeFactory::createShape("rectangle"); // 使用克隆方法创建新的形状 Shape* newCircle = circle->clone(); Shape* newRectangle = rectangle->clone(); // 使用新创建的形状 // ... // 清理 delete circle; delete rectangle; delete newCircle; delete newRectangle; return 0; }
実際のケース:
このコード サンプルは、さまざまな形状のオブジェクトを作成するファクトリ メソッド パターンを実装します。 。ShapeFactory クラスは、指定された型文字列に基づいて形状オブジェクトを作成する
createShape 静的関数を提供します。
main で、
ShapeFactory を使用して、円と四角形のオブジェクトのインスタンスを作成します。次に、clone メソッドを使用して新しいシェイプを作成し、オブジェクト構造全体が複製されるのを防ぎます。
利点:
以上がC++ 静的関数を使用してファクトリ メソッド パターンを実装できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。