Super-шаблон MFШаблоны MaxSite CMSНТML-курсы бесплатноРеклама на сайтеTelegram-канал
MaxSite.org

Как создать свой сайт

Заказать сайт/блог/лендинг недорого
Дневник Софт PHP CSS, HTML, LESS, SASS PHP/ООП SEO Alpine.js Шаблон MF Тайм-менеджмент jQuery и JavaScript Java и Android CodeIgniter Landing Page Git. GitHub
PHP/ООП
  • Паттерн Singleton в PHP
  • ООП в PHP
  • Композиция и наследование ООП в PHP
  • Шаблоны проектирования для PHP
  • Шаблон «Fluent interface» (Текучий интерфейс)
  • Шаблон проектирования Facade (Фасад)
  • Шаблон Abstract Factory (Абстрактная фабрика) на PHP
  • Шаблон Factory Method (Фабричный метод) на PHP
  • Шаблон Singleton. Трейты (trait) в PHP
  • Шаблон Multiton (Пул одиночек)
  • Шаблон Registry (Реестр)
  • Шаблон Composite (Компоновщик)
  • Шаблон Builder (Строитель)
  • Шаблон Strategy (Стратегия)
  • Шаблон проектирования Adapter (адаптер)
  • Шаблон Observer (Наблюдатель)
  • Шаблон Prototype (Прототип)
  • Шаблон Bridge (Мост)
  • Шаблон Decorator (Декоратор)
  • Шаблон Flyweight (Приспособленец)
  • Шаблон Proxy (Заместитель)
  • Шаблон «Template method» (Шаблонный метод)
  • Dependency injection (внедрение зависимости)

Я готов сделать для вас сайт/лендинг на MaxSite CMS с установкой, настройкой, созданием шаблона, подгонкой дизайна и т.д. У меня большой опыт и множество созданных сайтов, плагинов, шаблонов. Также я выполняю отдельные работы по PHP и HTML5/CSS3-верстке. Могу поучаствовать в вашем стартапе как php-программист. При необходимости переведу ваш сайт с другого «движка» (WP, Wix и т.д.) на MaxSite CMS, чтобы он стал быстро работать.

Принимаю заказы на создание telegram-ботов.

Несколько примеров последних работ:

  • b-reading.ru
  • dailycars.com.ua
  • vcredite.com.ua
  • cq-herson.info
  • eremeev.org
  • booksread.ru
  • beregite-zdorovje.ru
  • regression.pro

Подробнее о моих услугах

Шаблон Factory Method (Фабричный метод) на PHP

PHP/ООПООП3 июля 2019 г.

Factory Method (Фабричный метод) немного похож на Абстрактную фабрику. Он также позволяет спрятать конкретную реализацию и предоставить несколько типовых методов для использования.

Но, о отличие от абстрактной фабрики, фабричный метод даёт возможность задать какой именно класс «реализации» использовать в конкретной фабрике.

Исходный код шаблона вы найдете на гитхабе.

Существует несколько вариантов реализации Factory Method, я остановился на статическом методе. На самом деле это не обязательно, можно использовать и обычные методы, хотя это увеличит размер кода.

Итак. У фабрик должен быть единый интерфейс. Для этого мы используем абстрактный класс CommonAbstract, который сам может содержать обязательные методы, а также статичный метод initial(), через который собственно и происходит инстанцирование нужного «подкласса» (Class1 и Class2). Абстрактный класс, в отличие от интерфейса, позволяет создать общую функциональность, что немного упрощает код в расширяющих его классах.

Абстрактный метод run()говорит о том, что этот метод должен быть реализован во всех фабриках.

При создании фабрики, нужно сразу указывать какой именно класс реализации будет использован.

$a = CommonAbstract::initial('Class1');
$a->run(); // Class1 run
 
$b = CommonAbstract::initial('Class2');
$b->run(); // Class2 run

Какой именно вариант, зависит от задач. Например так:

$type_file = 'zip'; // rar, arj
 
if ($type_file == 'zip') {
    $f = CommonAbstract::initial('ZipClass');
} elseif ($type_file == 'rar') {
    $f = CommonAbstract::initial('RarClass');
} else {
    $f = CommonAbstract::initial('OtherClass');
}
 
$f->pack();

В абстрактной фабрике все «подклассы» были жестко заданы в каждой фабрике. Здесь же мы можем не меняя кода базового класса, просто добавить ещё один класс и подключить его через CommonAbstract::initial.

Существует ещё одна модификация Фабричного метода, которая отличается от этой способом инстанцирования. Здесь используется статичный метод, но можно сразу передать в CommonAbstract готовый класс. Тогда в методе initialинстанцирование уже не нужно.

$type_file = 'zip'; // rar, arj
 
if ($type_file == 'zip') {
	$zip = new ZipClass();
    $f = CommonAbstract::initial($zip);
} elseif ($type_file == 'rar') {
    $f = CommonAbstract::initial(new RarClass()); // или так
} else {
    $other= new OtherClass();
    $f = CommonAbstract::initial($other);
}
 
$f->pack();

По сути это одно и тоже, только писать кода придется больше. :-)

Шаблон Singleton. Трейты (trait) в PHP
Шаблон Abstract Factory (Абстрактная фабрика) на PHP
twitter.com facebook.com

Другие записи сайта

  • Куда двигаются блоги: анализ, прогноз
  • Интернет-сайты: стадия насыщения
  • Как быстро определить «правильные» шрифты?
  • LESS-компиляция через Node.js и Grunt
  • Текстовый редактор PSPad
  • Лучшие программы для вебмастера
  • История WordPress
Оставьте комментарий!

Комментарий будет опубликован после проверки. Вы соглашаетесь с правилами сайта.

(обязательно)

MaxSite.org
Блог о том, как создавать сайты

Услуги по созданию сайтов, блогов, лендингов
Обратная связь • Реклама на сайте
Мои проекты
  • MaxSite CMS
  • Super-шаблон MF
  • Шаблоны MaxSite CMS
  • Berry CSS (CSS Utilities)
  • Albireo Framework
  • UniCSS (Universal Atomic CSS)
  • Landing Page Framework
  • Бесплатные НТML-курсы
Ссылки
  • Telegram-канал
  • Github
  • Twitter
  • Telegram-бот
  • RSS
© MaxSite.org, 2006-2021. Работает на MaxSite CMS / Время: 0.3088 / SQL: 25 / Память: 1.34MB / Вход