有一个设计模式来命名这个解决方案?

时间:2015-09-03 17:01:45

标签: php algorithm design-patterns

我经常使用一种解决方案,我想知道是否存在与此解决方案相关或相邻的设计模式:

interface PhoneFormatterInterface {
    public function format($phone);
}

class BrazilFormatter implements PhoneFormatterInterface {
    public function format($phone) {
        //format a phone from +55 11 9 6666 2222 to (11) 96666-2222
    }

    public function isElegible($country) {
        //check if the country is right
    }
}

class PhoneFormatter {

    public $formatters;

    public function add(PhoneFormatterInterface $phoneFormatter)
    {
         //add formatters
    }

    public function format($phone, $country)
    {
          foreach ($formatters as $formatter) {
              if ($formatter->isElegible($country)) {
                  return $formatter->format($phone);
              }
          }
    }
}

class Client
{
    public function main()
    {
        $formatter = new PhoneFormatter();
        $formatter->add(...) //Add formatters, may we have some factory here

        $formatter->format('+55 11 9 6666 6666', 'BR');

    }
}

我可以用已知模式命名此解决方案吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

这是strategy设计模式的示例,此外,您可以创建abstract factory来创建特定的国家/地区电话格式化程序,而不会在应用的所有代码中分散复杂性。

答案 1 :(得分:0)

Strategy模式,也可以是Dependency Injection模式

这里的例子: 的策略Strategy pattern example

依赖注入: Dependency injection pattern