Prototypeパターンを使って簡単なアプリを作ってみた

prototype-e プログラミング

※当ブログでは商品・サービスのリンク先にプロモーションを含みます。ご了承ください。

デザインパターンの一つ、Prototypeパターンを勉強してみました。

今回はQtとC++を使って、不思議なGUIアプリを作ってみました。

Templateパターンと似ているけど、Prototypeパターンはインスタンスを量産する感じで、Templateパターンは、インスタンス生成の過程が保証されるという感じかなあ・・・

Prototypeパターンとは

インスタンスを原型から簡単に量産できるパターンかなと思いました。

例えば、とても手の込んだステッカーを作らなくてはいけないとなった場合、1枚作ってそれをコピペする要領で量産できると嬉しいですよね。

クラス図

prototype-class-diagram
https://ja.wikipedia.org/wiki/Prototype_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3

Prototypeクラスをinterfaceにして、Prototypeクラスではインスタンスを返すような実装をすればよいです。

作成したアプリ

ステッカー1枚を作成して、それを10枚プロトタイプパターンを作って複製するアプリを作りました。

コードと実行結果

prototype-app
実行結果

星を作るボタンを押すと、星ステッカーを1枚作成し、1枚作成する過程にグリッターを振るという3秒かかる作業が挟まります。なので、ボタンを押してからしばらく待ちます。

これを10枚すべて一から作ると、表示するのに30秒かかりますが、プロトタイプパターンを使用することで、

最初の3秒1回だけで済んでいます。

GitHub - jiji-thecat/dp-prototype
Contribute to jiji-thecat/dp-prototype development by creating an account on GitHub.

コードを分解

では、各クラスの説明をしていきます。

mainwindow.h / mainwindow.cpp

ここでは、UI部分の実装やロジックを入れています。

sticker.h / sticker.cpp

setAddons関数で、addonとしてグリッターを付与します。

そしてcreateClone関数で、Stickerのインスタンスを返します。

ここで生成されるインスタンスに、名前や付与されたaddonなども登録していきます。

こうすることで、createClone関数を呼び出すだけで、簡単にプロトタイプが生成できますね。

どういう時に使うのか?

同じものを量産しなくてはいけない時とかに使うと良いパターンなのかなと思います。

ゲームでいうならば、同じ武器を量産しなくてはいけないとき、、とか?弾丸とか・・・

まとめ

Prototypeパターンのアプリを作成してまとめてみました。

一つのものを量産しなくてはいけないときに使えるパターンだと覚えておきたいと思います。

参考サイト

にほんブログ村に参加しております!よろしければクリックお願いします 🙂

にほんブログ村 IT技術ブログへ
にほんブログ村

コメント

タイトルとURLをコピーしました