} public function getName() { return "User from database /factory/"; } } class UserFile implements IUser { public function __construct($id) { } public function getName() { return "User from filebase /factory/"; } } class UserFactory { public static function Create($id) { if ($id > 1000) { return new UserDb($id); } else { return new UserFile($id); } } } $uo = UserFactory::Create(2000); echo $uo->getName() . "<br>"; $uo = UserFactory::Create(500); echo $uo->getName() . "<br>";
public function getName() { return "Jack"; } } class UserFactory { public static function Create($id) { return new User($id); } } $uo = UserFactory::Create(1); echo( $uo->getName() . "\n" ); ?> <?php /* « 2 - The singleton pattern » <<------------------------------------------------------------------------------ resultado da execução: Handle = Object id #3 Handle = Object id #3
default: // Ошибка - неизвестный тип пользователя } } } function boolToStr($b) { if ($b == true) { return "Да\n"; } else { return "Нет\n"; } } function displayPermissions(User $obj) { print "Права доступа пользователя " . $obj->getName() . ":\n"; print "Чтение: " . boolToStr($obj->hasReadPermission()); print "Изменение: " . boolToStr($obj->hasModifyPermission()); print "Удаление: " . boolToStr($obj->hasDeletePermission()); } function displayRequirements(User $obj) { if ($obj->wantsFlashInterface()) { print "Для пользователя " . $obj->getName() . " требуется Flash-интерфейс\n"; } } $logins = array("John", "Mike", "Vasya"); foreach ($logins as $login) { displayPermissions(UserFactory::Create($login)); displayRequirements(UserFactory::Create($login)); }