PHP-php设计模式在实际中用得多吗?

PHP-php设计模式在实际中用得多吗?

归属感 发布于 2017-01-11 字数 218 浏览 1172 回复 3

在java中,不会设计模式,感觉有点吃力
所有的设计模式教材也以java作为教学
但php这种脚本语言,不知道大家在实际中用得多不多
感觉个人除了使用单例模式,还有工厂模式外,其它很少用到?不知道大家怎么看法?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

晚风撩人 2017-11-02 3 楼

常用的那几中模式还是经常用的,如单例模式、工厂模式、观察者模式、命令链模式、策略模式等:
工厂模式的例子:

<?php
interface IUser
{
function getName();
}

class User implements IUser
{
public function __construct( $id ) { }

public function getName()
{
return "Jack";
}
}

class UserFactory
{
public static function Create( $id )
{
return new User( $id );
}
}

$uo = UserFactory::Create( 1 );
echo( $uo->getName()."n" );
?>

单例模式的例子:

<?php
require_once("DB.php");

class DatabaseConnection
{
public static function get()
{
static $db = null;
if ( $db == null )
$db = new DatabaseConnection();
return $db;
}

private $_handle = null;

private function __construct()
{
$dsn = 'mysql://root:password@localhost/photos';
$this->_handle =& DB::Connect( $dsn, array() );
}

public function handle()
{
return $this->_handle;
}
}

print( "Handle = ".DatabaseConnection::get()->handle()."n" );
print( "Handle = ".DatabaseConnection::get()->handle()."n" );
?>

观察者模式的例子:

 <?php
interface IObserver
{
function onChanged( $sender, $args );
}

interface IObservable
{
function addObserver( $observer );
}

class UserList implements IObservable
{
private $_observers = array();

public function addCustomer( $name )
{
foreach( $this->_observers as $obs )
$obs->onChanged( $this, $name );
}

public function addObserver( $observer )
{
$this->_observers []= $observer;
}
}

class UserListLogger implements IObserver
{
public function onChanged( $sender, $args )
{
echo( "'$args' added to user listn" );
}
}

$ul = new UserList();
$ul->addObserver( new UserListLogger() );
$ul->addCustomer( "Jack" );
?>

参考资料:五种常见的 PHP 设计模式

甜柠檬 2017-04-10 2 楼

好的设计模式可以有很好的扩展性,易于维护。
我经常使用到的模式之一是访问者模式:当需要的对象以标准方式应用于某个对象的算法时,访问者模式是最优的做法。

灵芸 2017-03-17 1 楼

就像你所说的学习PHP的设计模式都是以Java为原型教学,这是因为PHP和Java由于语言特性不同,所以设计模式在PHP能比较难体现出来,就拿单例来说,在一般的并发量不是很大的项目里,PHP里就算不用单例模式也不是什么很严重的事情,就算是创建了很多对象,由于PHP进程执行完了,所有的资源就全部释放了,不会造成内存浪费。但在Java则不同了。也就是近几年PHP5.0出来后,面向对象在PHP里也逐渐流行起来,很多人把Java的思想应用到PHP上。这里好坏不予评论。但真正在PHP里常用的设计模式也就那么四五种:“单例模式”、“工厂模式”、“观察者模式”、“命令链模式”、“策略模式”。竟然像Zend FrameWork里用到的就比较多了。