Timyrcom
Главная
Регистрация
Вход
Приветствую Вас,
Гость
|
RSS
Четверг, 17.09.2026, 03:29
[
Новые сообщения
·
Участники
·
Правила форума
·
Поиск
·
RSS
]
Страница
1
из
1
1
Форум разработчика Timyrcom
»
Разработка
»
PHP
»
"Hello Wold" в патернах
"Hello Wold" в патернах
Рейдер
Дата: Среда, 15.05.2013, 22:30 | Сообщение #
1
Глава компании
Администраторы
Сообщений:
57
Наград:
0
PHP
<?php
/********************************************************************
Model-View-Controller implementation according to POSA
(Pattern-Oriented Software Architecture
[url=http://www.hillside.net/patterns/books/Siemens/book.html)]http://www.hillside.net/patterns/books/Siemens/book.html)[/url]
********************************************************************/
class HelloWorldController {
private $model;
function __construct($model) {
$this->model = $model;
}
function handleEvent($args) {
$this->model->setStrategy($args[2]);
$this->model->addText($args[1]);
}
}
class HelloWorldModel {
private $text;
private $observers =
array
();
private $strategy;
function attach($observer) {
$this->observers[] = $observer;
}
function getData() {
$facade = new HelloWorldFacade($this->strategy);
return $facade->getHelloWorld().$this->text."";
}
function addText($text='') {
$this->text = $text;
$this->notify();
}
function setStrategy($strategy) {
$this->strategy = $strategy;
}
function notify() {
foreach ($this->observers as $observer) {
$observer->update();
}
}
}
class HelloWorldView {
private $model;
function initialize($model) {
$this->model = $model;
$model->attach($this);
return $this->makeController();
}
function makeController() {
return new HelloWorldController($this->model);
}
function update() {
$this->display();
}
function display() {
echo
$this->model->getData();
}
}
/*********************************************************************
"Business logic"
********************************************************************/
class HelloWorld {
function execute() {
return "Hello world";
}
}
class HelloWorldDecorator {
private $helloworld;
function __construct($helloworld) {
$this->helloworld = $helloworld;
}
function execute() {
return $this->helloworld->execute();
}
}
abstract class HelloWorldEmphasisStrategy {
abstract function emphasize($string);
}
class HelloWorldBangEmphasisStrategy extends HelloWorldEmphasisStrategy {
function emphasize($string) {
return $string."!";
}
}
class HelloWorldRepetitionEmphasisStrategy extends HelloWorldEmphasisStrategy {
function emphasize($string) {
return $string." and ".$string." again";
}
}
class HelloWorldEmphasizer extends HelloWorldDecorator {
private $strategy;
function HelloWorldEmphasizer($helloworld,$strategy) {
$this->strategy = $strategy;
parent::__construct($helloworld);
}
function execute() {
$string = parent::execute();
return $this->strategy->emphasize($string);
}
}
class HelloWorldStrategyFactory {
static
function make($type) {
if ($type == 'repetition') return self::makeRepetitionStrategy();
return self::makeBangStrategy();
}
static
function makeBangStrategy() {
return new HelloWorldBangEmphasisStrategy;
}
static
function makeRepetitionStrategy() {
return new HelloWorldRepetitionEmphasisStrategy;
}
}
class HelloWorldFormatter extends HelloWorldDecorator {
function execute() {
$string = parent::execute();
return $string."";
}
}
class HelloWorldFacade {
private $strategy;
function __construct($strategyType) {
$this->strategy = HelloWorldStrategyFactory::make($strategyType);
}
function getHelloWorld() {
$formatter = new HelloWorldFormatter(
new HelloWorldEmphasizer(
new HelloWorld,$this->strategy));
return $formatter->execute();
}
}
$model = new HelloWorldModel;
$view = new HelloWorldView;
$controller = $view->initialize($model);
$controller->handleEvent($_SERVER['argv']);
?>
Советую разобраться начинающим...
Форум разработчика Timyrcom
»
Разработка
»
PHP
»
"Hello Wold" в патернах
Страница
1
из
1
1
Главная страница форума
Разработка
PHP
JavaScript
Ajax
Дизайн
Вёрстка (HTML, CSS)
Графика
Технические вопросы
SEO программы
SEO скрипты
Хостинги
UNITY3D
МАНУАЛЫ И УРОКИ
Администрация
Новости сайта
Флуд
Рекламный отдел
Поиск:
Меню сайта
Главная страница
Новости игровой индустрии
Доска объявлений
Уроки по разработке
Редакция New Games 2...
Видео
Проекты
Форум разработчика
Обратная связь
Архив Файлов
Вход на сайт
Поиск
Наш опрос
Кто вы?
Игродел
Геймер
Программист
Другое
Мини-чат
--
15 сек
30 сек
1 мин
2 мин
500
Друзья сайта
Официальный блог
Сообщество uCoz
FAQ по системе
Инструкции для uCoz
Команда разработчиков F.W © 2026 - 2015 |
Используются технологии
uCoz