Попытка реализовать правильные шаблоны в PHP, это правильно? - PullRequest
2 голосов
/ 13 августа 2011

Приведенный ниже код - это то, что я только что написал после прочтения немного шаблонов проектирования, и я хочу знать, есть ли у меня суть этого. Предполагается, что он реализует шаблон проектирования Mediator, а также использует интерфейсы поверх реализации и шаблон проектирования Factory.

<?php
interface iNav_Walker
{
    public function walk();
}

class Nav_Walker
{
    public static function factory()
    {
        $class_name = 'Generic_Nav_Walker';
        $class_name = filter( 'nav_walker_class', $class_name ); 

        $object = new $class_name;

        return $object;
    }

    private function __construct()
    {
        return FALSE;       
    }
}

class Generic_Nav_Walker implements iNav_Walker
{
    public function walk() 
    {
        echo 'Generic Nav Walker';
    }
}

class Custom_Nav_Walker implements iNav_Walker
{
    public function walk() 
    {
        echo 'Custom Nav Walker';
    }
}

class MyPlugin 
{
    public static function use_custom_walker( $walker_class )
    {
        return 'Custom_Nav_Walker';
    }
}

add_filter( 'nav_walker_class', array( 'MyPlugin', 'use_custom_walker_class' ) );

$nav_walker = Nav_Walker::factory();
$nav_walker->walk();

Очевидным преимуществом этого подхода является простота замены класса приложения по умолчанию на пользовательский. Ваш пользователь может даже расширить исходный класс и просто переопределить один метод, не так ли? Как это:

<?php
class Generic_Nav_Walker implements iNav_Walker
{
    public function walk() 
    {
        echo 'Generic Nav Walker';
    }

    public function other_func()
    {
        // Do something
    }

    public function other_func2()
    {
        // Do something
    }
}

class Custom_Nav_Walker extends Generic_Nav_Walker implements iNav_Walker
{
    public function walk() 
    {
        echo 'Custom Nav Walker';
    }
}

Потому что вы можете пожелать изменить только небольшую часть класса, или это плохая практика?

1 Ответ

0 голосов
/ 14 августа 2011

Попытка реализовать правильные шаблоны в PHP, верно?

Нет, вам не нужно смотреть на ваш код, чтобы понять, что вы не понимаете, что такое шаблоны.

Шаблон - это то, что ваш код - это , а не то, каким он должен быть, или какой-либо другой шаблон.Это быстрый способ описания абстрактной функциональности модуля.И, следовательно, полезный инструмент для описания кода и планирования учебного плана.

Планирование и реализация вашего проекта в виде набора шаблонов - очень ошибочный подход к разработке программного обеспечения / развитию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...