设计模式

单例模式

  • 只能被实例化一次,并且应用到整个项目中
class sign {
    // 声明一个静态属性,保证每次实现 sign 时,都是同一个对象
    protected static $ins = null;
    //封闭外部的 new 操作,由 getIns 方法实现
    public static function getIns()
    {
        if (self::$ins == null)
            self::$ins = new self();

        return self::$ins;
    }

    // 构造方法改为 protected,禁止 new 多个 sign 对象
    // final 关键字为了防止继承 sign 的类修改构造方法的权限 
    final protected function __construct(){}
    // 防止通过 clone 方法创建出两个对象
    final protected function __clone(){}
}

// 永远只能出现一个 sign 对象
$s1 = sign::getIns();

工厂方法模式

  • 子类重写接口/父类中的方法,解决不同的问题
// 公共的数据库连接接口
interface db {
    function conn();
}

interface Factory {
    function createDB();
}

class dbMysql implements db {
    public function coon()
    {
        echo '链接mysql';
    }
}
class mysqlFactory implements Factory {
    function createDB()
    {
        return new dbMysql();
    }
}

// 如果想要继续添加一种新的数据库连接,不需要更改之前的代码,只需要添加新的数据库属相类和工厂
class dboracle implements db {
    public function coon()
    {
        echo '链接mysql';
    }
}
class oracleFactory implements Factory {
    function createDB()
    {
        return new dboracle();
    }
}

$fact = new mysqlFactory();
$fact->createDB();

观察者模式

  • 被观察者发生变化时,观察者进行相应的改变
  • 被观察者实现attach()、detach()和notify()方法,观察者实现update()方法

策略模式

  • 和工厂模式类似
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容