LoginSignup
2
0

More than 5 years have passed since last update.

【デザインパターン】 Prototypeパターン

Last updated at Posted at 2015-07-05

概要

生成すべきオブジェクトの種類を原型となるインスタンスを使って明確にし、それをコピーすることで新たなオブジェクトの生成を行うパターン

以下の4種類のクラスからなる
1. Prototypeクラス(複製のためのインターフェイスを宣言)
2. ConcretePrototypeクラス(1.のオペレーションを実装)
3. Clientクラス(2.に複製を依頼して新たなオブジェクトを生成する)

具体例と実装

デザインカタログ作成を例にすると

上記1~3はそれぞれ
1. 素材集クラス
2. デザイン素材集クラス
3. デザインカタログ生成クラス

が対応する。
コードの詳細は以下

clipart.rb
class Clipart
  def initialize
  end

  def clone
  end
end
design_clipart.rb
class DesignClipart < Clipart
  def initialize
  end

  def clone
    # デザイン素材のコピーを作成
  end
end
design_catalog_creator.rb
prototype = DesignClipart.new
design_sample = prototype.clone
# design_sampleを使ってカタログを作成

メリット

  • 生成するオブジェクトの追加や削除を実行時に行える
  • パラメタ、構造を変えることでオブジェクトの仕様を変更できる
  • アプリケーションのクラス構成を動的に決められる

まとめ

オブジェクトの生成を動的に行い、システム全体で必要になるクラス数を減らすことの出来るパターン
インスタンス化を行う具現化クラスを隠蔽しているためClientオブジェクトを修正せずに特定のアプリケーション向けのクラスと協調させることが出来る

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0