原型是克隆,单例是静态。。。克隆相当于双胞胎两个可以同时做不同的事。静态其实是一个人不能同时做两件事
原型模型使用的场景是,创建新对象成本较大时可以利用已有的对象进行复制来获得,从而降低创建对象的代价,原型模式隐藏了创建对象的复杂性。只需要知道要创建对象的类型,然后通过请求就可以获得和该对象一模一样的新对象,无须知道具体的创建过程。使用的目的是创建新对象,而不是获取同一个对象实例,而且可以进行浅拷贝和深拷贝,单例模式创建的对象都是同一个,该模式只创建了一个对象,而不能创建新的对象。
加点样式不就好了
加点样式不就好了 '<span style="color:blue;">*</span>'
还不错,目前看过最好的吧。
工厂模式更多的是解决后期拓展(大部分是文件命名修改后)的问题。
单例模式更多的是解决内存开销(new 类),同样也是为了代码美观吧
上面两个更多的是操作类。
原型模式也是为了减少内存开销,也减少重复的代码量(如类里面的一些初始化方法)。
<?php echo "h";
并不会,clone出来的对象已经是另一个对象了,就比如我执行下面的代码
class Animal{ public $name = "Cat"; } $cat = new Animal(); echo $cat->name."\n"; $dog = clone $cat; echo $dog->name."\n"; $dog->name = "Dog"; echo $dog->name."\n"; var_dump($dog); var_dump($cat);
然后在运行的结果如下:
Cat Cat Dog object(Animal)#2 (1) { ["name"]=> string(3) "Dog" } object(Animal)#1 (1) { ["name"]=> string(3) "Cat" } [Finished in 0.3s]
注意,我var_dump出来的两个对象的#后面的id值是不同的,也就是说这是两个不同的对象,那么改变了Dog对象的name值也不会对Cat对象造成影响。