在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
工厂模式 简单工厂模式 【静态工厂方法模式】(Static Factory Method) 工厂模式的几种形态: 1、简单工厂模式(Simple Factory)又叫做 静态工厂方法模式(Static Factory Method) 2、工厂方法模式(Factory Method)又叫做 多态性工厂模式(Polymorphic Factory) 3、抽象工厂模式(Abstract Factory)又叫做 工具箱模式(ToolKit) 创建工厂类 <?php 调用工厂类中的静态方法创建对象 <?php 单例模式 创建类的唯一实例 test.php <?php index.php <?php 注册器模式 单例模式保证了一个类中只有一个实例被全局访问,当你有一组全局对象被全局访问时可能就需要用到注册者模式 (registry),它 提供了在程序中有条理的存放并管理对象 (object)一种解决方案。一个“注册模式”应该提供get() 和 set()方法来存储和取得对象(用一些属性key)而且也应该提供一个isValid()方法来确定一个给定的属 性是否已经设置。 register.php 注册器读写类 <?php class Registry extends ArrayObject
{ private static $_instance = null;
/**
* 取得Registry实例
*
* @note 单件模式
*
* @return object
*/
public static function getInstance()
{
if (self:: $_instance === null) {
self:: $_instance = new self();
echo "new register object!" ;
}
return self:: $_instance ;
}
/**
* 保存一项内容到注册表中
*
* @param string $name 索引
* @param mixed $value 数据
*
* @return void
*/
public static function set( $name , $value )
{
self::getInstance()->offsetSet( $name , $value );
}
/**
* 取得注册表中某项内容的值
*
* @param string $name 索引
*
* @return mixed
*/
public static function get( $name )
{
$instance = self::getInstance();
if (! $instance ->offsetExists( $name )) {
return null;
}
return $instance ->offsetGet( $name );
}
/**
* 检查一个索引是否存在
*
* @param string $name 索引
*
* @return boolean
*/
public static function isRegistered( $name )
{
return self::getInstance()->offsetExists( $name );
}
/**
* 删除注册表中的指定项
*
* @param string $name 索引
*
* @return void
*/
public static function remove( $name )
{
self::getInstance()->offsetUnset( $name );
}
} test.php 需要注册的类
<?php class Test
{ function hello()
{
echo "hello world" ;
return ;
}
} ?> index.php 测试类 <?php //引入相关类 require_once "Registry.class.php" ;
require_once "test.class.php" ;
//new a object $test = new Test();
//$test->hello(); //注册对象 Registry::set( 'testclass' , $test );
//取出对象 $t = Registry::get( 'testclass' );
//调用对象方法 $t ->hello();
?> |
2022-07-29
2022-08-17
2022-11-06
2022-07-30
2022-08-17
请发表评论