三个基本的设计模式

 
  1. 工厂模式:该模式是将类的实例化进行封装,而不是直接实例化,例如
     
    <?php
    class Factory{
    static function create()
    {
    $c = new ClassTest();//已知类ClassTest
    return $c;
    }
    }
     
     
    ?>
    <?php
    $test = Factory::create();
    ?>
    在本例中,我们没有直接使用$test = new ClassTest();来实例化类ClassTest,而是将实例化封装在Factory类中,这样做的好处就是,如果我们实例化了很多classtest类对象,当我们对CLassTest类名进行修改时,只需在Factory::create()中进行修改。
  2. 单例模式:该模式使得某些只需实例化一次而在多处使用,比如:只进行一次数据库连接,而可以使得多个地方使用,每次使用数据库时都连接数据库了。
     
    <?php
    class Connect{
    private static $db;
     
    private function __construct()
    {
    /*将构造函数定义为私有的,这样类connect将不能够在类外实例化*/
    }
    static function get_instance($host, $database, $user, $pwd)
    {
    if (!self::$db)//如果$db已经存在
    {
    $db = new self();
    }
    return $db;
    }
    }
     
     
    $database = Connect::get_instance($host, $database, $user, $pwd);
    ?>
     
  3. 注册树模式:将已经实例化的对象注册到注册树(数组)中,下次使用直接从中提取就是,而不必在此实例化一个对象,一个被注册的对象将是一个全局的对象了。
     
    <?php
    class Factory{
    static function create()
    {
    $c = new classtest();
     
    /*将对象注册到注册数组中,一旦调用Factory::create()之后,便无需再次实例化了,直接打注册数组中取出就是*/
    Register::set($db, $c);
    return $c;
    }
    }
     
    ?>
    <?php
    $test = Factory::create();
    ?>
     
     
     
    <?php
    class Register{
     
    /*注册数组*/
    private static $reg_arr;
     
    /*获取注册对象*/
    public static function get($key)
    {
    return self::$re_arr[$key];
     
    }
     
    /*设置注册对象*/
    public static function set($key, $value)
    {
    self::$reg_arr[$key] = $value;
     
    }
     
    /*消除注册对象*/
    public static function _unset($key)
    {
    unset($reg_arr[$key]);
    }
    }
     
    $db2 = Register::get($db);
    ?>
     
    # 关注作者公众号
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030082939134.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuZXV0cm9u,size_16,color_FFFFFF,t_70#pic_center)

     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值