PHP设计模式

微软的设计模式理论是:“该文档引入了模式,然后将它们呈现在一个存储库或目录中,这是为了帮助您找到解决问题的正确…

微软的设计模式理论是:“该文档引入了模式,然后将它们呈现在一个存储库或目录中,这是为了帮助您找到解决问题的正确模式组合而组织的。”

设计模式的例子

单例

一个类有一个实例,它提供了一个全局访问点,下面的代码将解释有关单例的概念。

<?php
   class Singleton {
      public static function getInstance() {
         static $instance = null;

         if (null === $instance) {
            $instance = new static();
         }
         return $instance;
      }
      protected function __construct() {
      }

      private function __clone() {
      }

      private function __wakeup() {
      }
   }

   class SingletonChild extends Singleton {
   }

   $obj = Singleton::getInstance();
   var_dump($obj === Singleton::getInstance());

   $anotherObj = SingletonChild::getInstance();
   var_dump($anotherObj === Singleton::getInstance());
   var_dump($anotherObj === SingletonChild::getInstance());
?>

基于静态方法创建实现的上面的例子是getInstance()

工厂

A类简单创建对象并且您想要使用该对象,下面的示例将解释有关工厂设计模式。

<?php
   class Automobile {
      private $bikeMake;
      private $bikeModel;

      public function __construct($make, $model) {
         $this->bikeMake = $make;
         $this->bikeModel = $model;
      }

      public function getMakeAndModel() {
         return $this->bikeMake . ' ' . $this->bikeModel;
      }
   }

   class AutomobileFactory {
      public static function create($make, $model) {
         return new Automobile($make, $model);
      }
   }

   $pulsar = AutomobileFactory::create('ktm', 'Pulsar');
   print_r($pulsar->getMakeAndModel());

   class Automobile {
      private $bikeMake;
      private $bikeModel;

      public function __construct($make, $model) {
         $this->bikeMake = $make;
         $this->bikeModel = $model;
      }

      public function getMakeAndModel() {
         return $this->bikeMake . ' ' . $this->bikeModel;
      }
   }

   class AutomobileFactory {
      public static function create($make, $model) {
         return new Automobile($make, $model);
      }
   }
   t$pulsar = AutomobileFactory::create('ktm', 'pulsar');

   print_r($pulsar->getMakeAndModel());
?>

工厂模式的主要困难是它会增加复杂性,对于优秀的程序员来说不可靠。

战略模式

策略模式制定一个家族算法并封装每个算法。在这里,每个算法在家庭中应该是可互换的。

<?php
   $elements = array(
      array(
         'id' => 2,
         'date' => '2011-01-01',
      ),
      array(
         'id' => 1,
         'date' => '2011-02-01'
      )
   );

   $collection = new ObjectCollection($elements);

   $collection->setComparator(new IdComparator());
   $collection->sort();

   echo "Sorted by ID:n";
   print_r($collection->elements);

   $collection->setComparator(new DateComparator());
   $collection->sort();

   echo "Sorted by date:n";
   print_r($collection->elements);
?>

模型视图控制

视图充当GUI,模型行为作为后端,控制充当适配器。这里有三个部分互相连接。它将传递数据并访问彼此之间的数据。

模型视图控制

类别:PHPPHP 技巧

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册