第八章面向对象设计问答题

1、通过static关键字限制一个类最多只能创建一个实例化对象(提示:单态模式);

单态设计模式通常包含以下三点:
一个私有的 静态的 属性;(用于保存仅有的一个实例化对象)
一个私有的 静态的 构造方法;(确保用户无法通过创建对象对其实例化)
一个公有的 静态的 方法;(负责对其本身进行实例化)
单态模式主要作用是保证在面向对象编程设计中,一个类只能有一个实例对象存在。
要编写单态设计模式必须让一个类只能实例化一个对象,而想要让一个类只能实例化一个对象就要先让一个类不能实例化对象。
一看到单态模式就要想到static 这个关键字,static成员是属于类的,跟对象无关,而且静态成员总是唯一存在的 在多个对象之间共享
 <?php
 class SingleTon {
	 //用于保存仅有的一个实例化对象
	 private static $instance = null;

	//构造方法声明为private,防止被直接创建对象,封装后只能在类的内部使用new去创建
	 private function __construct(){ }

	//只有通过这个方法才能返回本类中的对象,该方法是静态方法 用类名调用
	 public static function getInstance() { 
		 if(self::$instance === null){ //如果本类中的$instance为空,说明还没有被实例化过
			 self::$instance = new SingleTon(); //通过new self()实例化本对象  
			 return self::$instance;  //返回这个对象实例:这个return在if里面和if外面没区别,但里面效率更高
		 }     
	 } 
	 public function testSingleTon(){
		echo "谢谢使用单态设计模式<br />";
	 }
}

  $instance = Singleton::getInstance();//只能使用静态方法getInstance()去获取singleTon类的对象
  $instance->testSingleTon();

  $instance2 = SingleTon::getInstance();//如果再次实例化,不会报错,但也不会有新的对象建立
  var_dump($instance2);//输出NULL,看来只能实例化一个类
  //当然$instance2也不能去用里面的方法了,不然会报错$instance2->testSingleTon();
 ?> 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值