zoukankan      html  css  js  c++  java
  • 设计模式

    1.单例模式

    场景:连接mysql、操作cookie只有一个对象去连接
    原理:只能new一个对象(禁止new多个和clone)

    class single{
    protected static $sin = null;
    //方法前加final不能被覆盖,类前加final不能被继承
    //禁止外部NEW
    final protected function __construct()
    {
    }
    //禁止克隆
    final protected function __clone()
    {
    // TODO: Implement __clone() method.
    }

    //设置内部
    public static function getins(){
    if(self::$sin === null){
    self::$sin = new self();
    }
    return self::$sin;
    }
    }
    $s1 = single::getins();
    $s2 = single::getins();
    if($s1 == $s2){
    echo "是相同的";
    }else{
    echo "不是相同的";
    }

    2.工厂模式:工厂方法或者类生成对象,而不是在代码中直接new

    interface db{
        function conn();
    }
    
    interface Factory{
        function createdb();
    }
    
    class dbmysql implements db{
        public function conn()
        {
            echo "连接了mysql";
        }
    }
    
    class dboracle implements db{
        public function conn()
        {
            echo "连接了oracle";
        }
    }
    
    class mysqlfac implements Factory{
        public function createdb()
        {
            return new dbmysql();
        }
    }
    
    class oraclefac implements Factory{
        public function createdb()
        {
            return new dboracle();
        }
    }
    
    $fac = new mysqlfac();
    $db = $fac->createdb();
    $db->conn();
    
    $fac = new oraclefac();
    $db = $fac->createdb();
    $db->conn();
  • 相关阅读:
    day03接口的初期认识
    day03模板方法设计模式
    day02抽象类的练习
    day02抽象类1
    final 关键字
    day01子类与父类特点
    day01继承extends
    day01函数的重载
    图解HTTPS
    编译的时候遇到 The type java.lang.Object cannot be resolved.
  • 原文地址:https://www.cnblogs.com/finnlee/p/8502997.html
Copyright © 2011-2022 走看看