前言:
本文中所讲解的三工厂指的是简单工厂,工厂方法,抽象工厂设计模式,在大话设计模式中,三个工厂最后以三姐妹的身份出现在比赛现场中,本文中将三个工厂联系起来进行学习。
内容:
(一)简单工厂模式
1.定义
用一个单独的类来创造实例的过程,这是工厂的定义。那么简单工厂是由一个工厂对象决定创建出哪一种产品类的实例。它的实质就是根据工厂类传入的参数决定实例化那个对象。当你需要什么,只需传入一个正确的参数,就可以获取需要的对象,而无需知道其创建的细节。
2、eg
当你想吃苹果,只需到超市去买,而无需知道果园是如何生产出苹果的,那么果园就相当于一个工厂。
3.UML图
(二)工厂方法
1.定义
定义一个用于创建的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。工厂方法定义了一个抽象工厂,抽象工厂的下面有多个子类工厂,故延迟到子类指的是子类工厂。
2.eg
我现在想吃苹果和黄瓜,那么我需要去水果店和蔬菜店,这时需要定义一个抽象工厂,食物工厂,下面定义具体的水果工厂和蔬菜工厂,进而实例化类。
3.UML图
(三)、抽象工厂
1.定义
提供创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类
这里对象指的是一系列,比如书中的例子指的是SqlServer和Access属于同一系列的两个不同的对象,比如同样是苹果,有苹果干、水果、苹果罐头等等,这时需要考虑抽象工厂模式。
2.eg
我想吃苹果系列的,苹果干、苹果罐头、新鲜的苹果等等,这时需要的抽象工厂提供给我干果店、水果店、超市。这就是抽象工厂使用的场合。
3.UML图
(四)三工厂之比较
工厂方法是简单工厂模式的进一步抽象和推广,抽象工厂是工厂方法的升级版
总结:
简单工厂设计模式违背了开放-封闭原则,也是最简单的设计模式,所以不属于二十三个设计模式之列,工厂方法设计模式克服了简单工厂的缺点,保持了其优点,抽象工厂设计模式适合提供一个创建一系列相关或相互依赖对象的接口,抽象工厂设计模式也有自己的不足,用反射+抽象工厂,用反射+配置文件,弥补自己的不足。三个工厂,更需在实践中体会。
标签:定义,之三,工厂,实例,抽象,苹果,设计模式 From: https://blog.51cto.com/u_15586641/5763782