前几天写了对单列模式的理解和学习技巧,这只是我个人对于这个开发模式的认识和理解,如果大家有更好的解释可以推荐给我啊,一起学习,那么今天就一起学习下什么又是工厂模式呢?
工厂模式是一种类,建立了一个工厂来根据所需来创建对象,这种方式在多态性编程中是很重要的,允许动态替换类,修改配置等。
工厂模式分为:简单工厂模式、工厂方法模式、抽象工厂模式。
简单工厂模式,通过静态方法创建对象。可以理解成,只负责生产同一等级结构中的任何一个产品,但是不能新增产品。
工厂方法模式,去掉了简单工厂模式中方法的静态属性,使其可以被子类集成,定义一个创建对象的接口,让子类去决定实例化哪个类。可以理解成,用来生产同一等级结构中的固定产品,但是支持增加产品。
抽象工厂模式,提供一个创建一系列相关或者相互依赖的对象的接口。可以理解成,用来生产不用类型的全部产品,但是不能增加新品,支持增加新的类型。
以上这些解释呢 是从网上找的,感觉实在是很不好理解,于是自己总结了下:
当你需要对一个事件做处理,添加了一个类,这个类里面有很多方法,然后你在外部去new这个类,进行实例化,然后进行接下来的操作。
当忽然有一天,这个类对于事件的操作作用不大了,需要对这个类进行更换和替代的时候,你散落在项目各个地方的new类就会成为你的负担,一个两个也许还好,但是如果有几十一百个呢,在这种情况下,如果你在写这个类的时候使用了工厂模式,那么就会相当的简单,提高了代码编写和执行的效率!
看代码:
你需要这么一个类
class news{
public function look(){}
public function edit(){}
public function delete(){}
}
创建一个新的类来返回news的实例
class save{
public static function factory(){
return new news();
}
}
这样你在需要操作news类的时候直接
$news = save::factory();
$news->look(); //执行news内的方法
如果一旦发现news不够用或者需要更换了 那么直接更换save类即可:
class save{
public static function factory(){
return new news_1(); //更换成所要替换的类
//return new news_2(); //更换成所要替换的类
...
}
}
这就是简单的工厂模式,你看懂了吗?