『増補改訂版Java言語で学ぶデザインパターン入門』をKotlinでやってみる(Singleton編)
【経緯】
『増補改訂版Java言語で学ぶデザインパターン入門』をKotlinでやってみるの第四回目。
Singletonパターンです。
【サンプルコード】
Singletonは割と多くの人が知っている&使っているイメージです。
Singletonはインスタンスが1つしか存在しないことを保証するパターンです。
良くシステムを通して共通するものの管理に使っているイメージがあります。
ゲーム作成ではお馴染みですね。自分も最初に知ったのはテトリス作ってる時でした。
ただ、そもそもKotlinにstaticがないらしいので、自作Singletonする必要があるのかとか実装自体は結構やり辛かったです。
まあKotlinが用意してくれてるものを使えばそんなに困らないからだろうが・・・。
※今回はpaiza.ioさんでやってみました。便利。
fun main(args: Array<String>) {
// Here your code !
println("Start")
var obj1 = Singleton.getInstance()
var obj2 = Singleton.getInstance()
if (obj1 === obj2) {
println("同じインスタンスです")
} else {
println("違うインスタンスです")
}
println("End")
}
public object Singleton {
init {
println("インスタンスを作成しました")
}
public fun getInstance() {
println("インスタンスを取得しました")
}
}
Start
インスタンスを作成しました
インスタンスを取得しました
インスタンスを取得しました
同じインスタンスです
End
【練習問題コード】
※1問目と2問目合わせてです。2問目については一応巻末のコードと同じ動きはしますが、自信ないです。。
fun main(args: Array<String>) {
// Here your code !
println("Start")
var ticket1 = TicketMaster.getInstance()
var ticket2 = TicketMaster.getInstance()
println("1:" + ticket1.getNextTicketNumber())
println("2:" + ticket2.getNextTicketNumber())
if (ticket1 === ticket2) {
println("同じインスタンスです")
} else {
println("違うインスタンスです")
}
println("End")
var triple = Triples.getInstance(0)
for (i in 0..8) {
println(Triples.getNumber(i%3))
}
}
public object TicketMaster {
fun getInstance():TicketMaster {
return TicketMaster
}
private var number:Int = 1000;
public fun getNextTicketNumber():Int {
return ++number;
}
}
public class Triples(index:Int) {
public var number:Int=index
private fun getNumber(index:Int):Int {
return number
}
companion object {
var triples = arrayOf(Triples(0), Triples(1), Triples(2))
public fun getInstance(index:Int):Triples {
return triples.get(index)
}
public fun getNumber(index:Int):Int {
return triples[index].getNumber(index)
}
}
}
Start
1:1001
2:1002
同じインスタンスです
End
0
1
2
0
1
2
0
1
2
【参考サイト】
https://yyyank.blogspot.com/2017/03/kotlinstaticwhy-doesnt-kotlin-have.html
http://k-seito.hatenablog.com/entry/2017/10/22/100823
https://android.benigumo.com/20170810/kotlin-static-member/
https://qiita.com/zhangho/items/2de7e4836e9b2bcf6353
Author And Source
この問題について(『増補改訂版Java言語で学ぶデザインパターン入門』をKotlinでやってみる(Singleton編)), 我々は、より多くの情報をここで見つけました https://qiita.com/siroykht/items/33eb054514deb72338c5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .