设计模式之单例模式与工厂模式

来源:互联网 发布:php邮箱正则表达式 编辑:程序博客网 时间:2024/05/17 00:16

单例模式

概念

单例模式是一种常见的“设计模式”!

什么是设计模式?

所谓的设计模式,并不是一种新的语法,而是人们在实际的应用中面对某种特定的情形而设计出来的某种常见的有效的解决方案,只是经验的总结!

单例就是单一的实例!

如果我们能通过某些技巧从语法上使得一个类只能开辟一个对象空间的话,就可以节省相应的对象资源,这种模式就叫作单例模式!

单例模式的最典型的做法:

也叫作“三私一公”!

#单例模式(所谓的三私一公思想)#1.私有化一个构造方法,防止类外无限new对象#2.私有化一个静态属性,用于存放类内new出来的那个对象(即单例对象),私有化是为了防止类外的任意修改,静态是因为要通过类访问#3.公开一个静态方法,给类外一个接口,实现单例对象的产生,静态是因为可能还不存在对象,只能通过类访问该方法#4.私有化克隆魔术方法,因为,用户可以无限克隆那个单例对象class Student {    private static $instance;    private function __construct(){    }    public static function getInstance($class_name){        if(!self::$instance instanceof self){            self::$instance = new $class_name;        }        return self::$instance;    }    private function __clone(){    }}

工厂模式

概念

也是一种设计模式!

工厂模式的含义就是:设计一个类(此时这个类可以叫作“工厂类”),该类的作用就是帮助其他的类“生产”对象,也就是说,只要传递给这个“工厂”一个类名,就可以得到一个相应的对象!

#工厂模式
class Factory { public static function getInstance($class_name){ if(file_exists("./".$class_name.".class.php")){ include "./".$class_name.".class.php"; return new $class_name; }else{ die("系统错误,没有找到相关的类!"); } }}

利用工厂方法,生产单例对象

但是这里的单例,实现的方式并不是“三私一公”!

#利用生产模式,生产一个单例对象class Factory {    private static $instance;    public static function getInstance($class_name){        if(file_exists("./".$class_name.".class.php")){            include "./".$class_name.".class.php"            if(!self::$instance instanceof self){                sele::$instance=new $class_name;            }            return self::$instance;        }else{            die("系统错误,没有找到相关的类!");        }    }}


阅读全文
0 0
原创粉丝点击