今PHPで、国名とそれを管理するサーバを管理するクラスを作る必要があります。
国名はstringで、Countryクラスの定数として管理してあります。
サーバはServerクラスのインスタンスで管理してあります。
国名のstringからServerインスタンスを取得するクラスはどのように設計するのが一般的でしょうか。
Serverインスタンスを作るにはnew Server(string $hostname, int $port);
といった感じでコンストラクタを呼び出す設計を考えていますが、
現時点で思いついているのが、
- Countryクラスに
static function getServer(string $countryCode): Server
といった関数を作る - Serverクラスに
static function getServerByCountryCode(string $countryCode): Server
といった関数を作る - 全く別の
ServerCountryMap
クラスを作り、クラス定数としてServerクラスのコンストラクタで使う$hostname
と$port
を保持する
の3つです。
Serverクラスのコンストラクタで国を指定するというものも考えましたが、依存循環になってしまうのかと思いました。
回答2件
あなたの回答
tips
プレビュー