デザインパターン

皆様、お疲れ様です。
今日も一日お疲れ様でした。
これから帰宅します。


私のブログを見てくれている方はプログラミングを学び始めた方、学ぼうと思っている方が多いと思うのですが、デザインパターンという言葉をご存知でしょうか?

プログラミングの世界にはある程度こういうときにはこういう書き方をするという決まり、型、テンプレートといったものがあります。
それがデザインパターンです。

世の中には無数のデザインパターンが存在しますが、今回はもっとも単純で簡単なデザインパターンのひとつ、Singletonについて紹介したいと思います。

Singletonというのはオブジェクト指向言語におけるインスタンス、オブジェクトをひとつしか作れないように制限を加えるパターンのことを言います。
JavaのSingletonパターンの例をひとつあげます。

次はコンサートなどのチケットを返すメソッドをもつクラス、TicketMakerクラスです。

public class TicketMaker{

private int ticket = 1000;
private TicketMaker tm = new TicketMaker();
private TicketMaker(){};

public static TicketMaker getInstance(){
return tm;
}

public int getTicket(){
ticket++;
return ticket;
}
}

お気づきでしょうか?
ここでコンストラクタがプライベートになっています。つまり、ほかのクラスからTicketMakerのインスタンスを、newしようとしてもエラーになります。
これでだれかが間違ってインスタンスを作ることはありません。
ではどうやってインスタンスを手に入れるのでしょうか?

実はこのクラスの中ですでにインスタンスをnewしています。これをgetInstance()メソッドで呼びだすことで、tmというインスタンスを手に入れることができます。

getInstance()はスタティックなメソッドなので、
TicketMaker.getInstance();
という形で呼び出すことができます。
返ってきたtmを利用してgetTicket()メソッドを呼び出すことでチケットの番号を手に入れることができるのです。
その後にticket++されているので、チケット番号はインクリメントされます。つまり同じ番号を手に入れることは絶対にありえません。
どこのクラスから誰が実行しても同じtmを利用することになるので、当然その中のticketフィールドは共通です。
このように情報に一意性を持たせたい場合などにシングルトンは有効です。

参考になりましたでしょうか?
もしデザインパターンに興味を持った方はぜひ勉強してみてください!

GoFの23種のデザインパターンが代表的です。学べば、確実にスキルは向上しますよ!
それでは、お付き合い頂きありがとうございました!