Добрый день хотел получить комментарии и подзатыльники! есть шаблон как вы думаете корректно ли выполнил, что можно заменить ,исправить вот https://github.com/immortal1986/library-classes/blob/master/pattern/Factory_method.php или код Код (PHP): namespace pattern; interface dataClearReturn{ function check($inputData); } class checkString implements dataClearReturn{ function check($inputData){ if(is_string($inputData)){ return "yes this is really is string - " . $inputData; }else{ return "no this is not string - " . gettype($inputData); } } } class checkInteger{ function check($inputData){ if(is_numeric($inputData)){ return "is yours integer - {$inputData}"; }else{ return "Nope"; } } } class Factory_method { public static function checker($data){ $data = gettype($data); switch($data){ case "integer": return new checkInteger();break; case "string": return new checkString();break; } } } $str = "MYSTRING"; $int = 100; $objInt = Factory_method::checker($int); echo $objInt->check($int); echo $objInt->check($str); $objStr = Factory_method::checker($str); echo $objStr->check($str); echo $objStr->check($int);
Это не фабричный метод. В фабричном методе у вас должно быть два класса - создателя для каждого из объектов, т.е. не Factory_method, а StringCreator и IntegerCreator. То, что вы пытаетесь сделать, в некоторых источниках называется Simple Factory
Несколько замечаний: 1. По оформлению кода: 1) Названия интерфейсов лучше начинать с буквы i 2) Методы должны отражать уровень доступа - public/private/protected 2. По логике 1) checkInteger не имплементит интерфейс 2) is_numeric не является логическим продолжением checkInteger. is_numeric вернет true, если аргумент double.