Open tonkat-prtq opened 2 years ago
個人的な感覚ですが、NumberがInterfaceと言われると変な感じがしますね。。。 たぶんInterfaceのイメージ感が違うのかなぁと。
インタフェースは実装(implements)するものです。 どういうことかというと、「~ができる」を定めるもので、インタフェース名を見れば何ができるのかがわかるが大事です。
今回だと、BingoCardがNumberを実装してもなにができるようになるかがよくわからないですよね。
また、Interfaceは基本は型として使われることが多いです。 Number num = new BingoCard(); となってしまうので、やはりよくわからない。。。
むしろ、BingoCardとBingoTroutこそがInterfaceっぽいもので、 BingoCard bingoCard = new BingoCardImpl(); とか BingoCard bingoCard = new TestBingoCard(); BingoCard bingoCard = new BingoCardForHardMode(); とかに使うイメージですかね。
そのBingoCardインターフェースに数字の範囲を決めるメソッドを一つ作っておくと、 全てのBingoCardを実装したクラスは数字の範囲を決めるメソッドを持っていることが保証できますね。
使い方としてはこんなイメージです。
https://github.com/tonkat-prtq/java-bingo-app/blob/8faed432031514167f1f780d64a61cd958cffe77/src/com/company/Number.java
https://github.com/tonkat-prtq/java-bingo-app/blob/8faed432031514167f1f780d64a61cd958cffe77/src/com/company/Number.java#L1-L7
やりたいこと
→ 抽選対象の数字の範囲を決めるメソッドを切り出したい
問題点
BingoCard.rows
とBingoCard.columns
の情報が必要複数のクラスで「抽選対象の数字の範囲」を使うので、いちいちクラスごとで呼び出すのではなく、切り出してそれを呼び出す形にしたいと考えましたが、逆にごちゃついてしまったような感じです。
もしかして、「抽選対象の数字の範囲」クラスを値オブジェクトとして作ってしまったほうが良いんでしょうか……