getSystemInfo()
アプリケーションにメソッドを持つ SystemInfoFactory クラスがあります。
/**
* Returns SystemInfo object based on which OS
* server uses
*
* @return SystemInfoInterface SystemInfo object
*/
public function getSystemInfo()
{
$os = $this->getOS();
$systemInfo = null;
switch ($os) {
case "Linux":
$systemInfo = new LinuxInfo();
break;
case "Darwin":
$systemInfo = new OSXInfo();
break;
case "Windows":
$systemInfo = new WindowsInfo();
break;
}
return $systemInfo;
}
そのため、ホスト システムに応じて適切なオブジェクトを選択します。現在、各「情報クラス」はSystemInfo
インターフェイス(getArchitecture、getCPUなどのメソッド)を実装していますが、ご覧のとおり、返されたオブジェクトが実際にインターフェイスを実装しているかどうかをコードのどこにもチェックしていません。$systemInfo
選択したオブジェクトがそれを返す前にそれを実装しているかどうかを確認することは「良い習慣」と見なされますか? 明らかに必須ではありませんが、誰かがこのアプリケーションを拡張し (たとえば BSD サポートを追加する)、すべてのメソッドの実装を忘れた場合、デバッグが難しくなる可能性があります。