(BUILDER)建造者与(FACTORY)工厂模式 的比较
首先,说明下 参考博文
1. 建造者 http://www.cnblogs.com/zhili/p/BuilderPattern.html
2. 抽象工厂 http://www.cnblogs.com/zhili/p/AbstractFactory.html
3. 工厂 http://www.cnblogs.com/zhili/p/FactoryMethod.html
4. 简单工厂 http://www.cnblogs.com/zhili/p/SimpleFactory.html
其次,比较之 总结
创建型模式共包含五种:抽象工厂模式,建造者模式,工厂方法模式,原型模式,单例模式。
这五种模式之间都有一个共同的特征:就是可以用来创建指定的产品对象。但是这些模式之间还都存在着些许区别,所以应用场景会有所不同。
抽象工厂模式致力于为不同产品族提供一组通用的接口来生产产品组件,该模式天然的约束了相同产品族的组件协同使用,而不会出现混乱。
即:A工厂生产的所有组件都只和与A产品族的组件一起使用。
建造者模式也提供了一组统一的接口用来生产产品,但是它更注重按照它规定的步骤,一步步的生产组件,并最后获取到产品。而对于每个组件如何生产则由不同的建造者自己发挥。
由此可见,建造者的最终目的是获取到相应的产品而非组件,而抽象工厂则要求生产指定组件即可,至于组件如何使用则由用户来灵活控制,表现得真正的像个“工厂”一样。
注:其实总结也是搬运来的 呵呵 出处 http://blog.chinaunix.net/uid-20453737-id-4288062.html?utm_source=jiancool
(BUILDER)建造者与(FACTORY)工厂模式 的比较的更多相关文章
- 设计模式之Factory工厂模式的好处
最最直观的好处就是吹牛逼,看着要比普通创建对象要屌 好看 一般情况下,我们创建对象使用的是new. Sample sample=new Sample(); 然而,实际情况会比这样复杂的多,比如说 Sa ...
- C++设计模式-Factory工厂模式
Factory1.定义创建对象的接口,封装对象的创建2.将实际创建工作延迟到子类中,例如,类A中药使用类B,B是抽象父类,但是在类A中不知道具体要实例化哪一个B的子类,但是在类A的子类D中是可以知道的 ...
- factory工厂模式之简单工厂SimpleFactory
简单工厂(Simple Factory) 又叫静态工厂,是工厂模式三中状态中结构最为简单的.1.主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例.2.或者针对每个产品, ...
- factory工厂模式
工厂方法模式 工厂方法模式概述 工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现 简单理解: 与简单工厂模式类似,简单工厂模式是一个工厂,用户将条件为 ...
- 设计模式(三): FACTORY工厂模式 -- 创建型模式
1.定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类. 2.适用场景 1.第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体 ...
- Factory - 工厂模式
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
- 设计模式之Factory工厂模式
在上一章,模板模式中,我们在父类规定处理的流程,在子类中实现具体的处理.如果我们将该模式用于生成实例,便演变成了Factory模式,即工厂模式. 在Factory模式中,父类决定实例的生成方式,但并不 ...
- factory工厂模式之抽象工厂AbstractFactory
* 抽象工厂: 意图在于创建一系列互相关联或互相依赖的对象. * 每个工厂都会创建一个或多个一系列的产品 * 适用于:产品不会变动,开始时所有产品都创建好,然后根据分类获取想要的 某一类产品(很像sp ...
- factory工厂模式之工厂方法FactoryMethod
工厂方法(Factory Method) * 工厂方法把不同的产品放在实现了工厂接口的不同工厂类(FactoryAImpl,FactoryBImpl...)里面, * 这样就算其中一个工厂类出了问题, ...
- 常用的JavaScript设计模式(二)Factory(工厂)模式
Factory通过提供一个通用的接口来创建对象,同时,我们还可以指定我们想要创建的对象实例的类型. 假设现在有一个汽车工厂VehicleFactory,支持创建Car和Truck类型的对象实例,现在需 ...
随机推荐
- linux下解决git clone太慢
此教程同样也适用与vscode下载太慢的问题 git和vscode会自动使用http_proxy,https_proxy环境变量的代理,所以我们只需要设置这个环境变量即可 前提 需要一个可用的代理,这 ...
- C语言常用函数
一.数学函数 调用数学函数时,要求在源文件中包下以下命令行: #include <math.h> 函数原型说明 功能 返回值 说明 int abs( int x) 求整数x的绝对值 计算结 ...
- L2-002. 链表去重(模拟)
题意: 给定一个带整数键值的单链表L,本题要求你编写程序,删除那些键值的绝对值有重复的结点.即对任意键值K,只有键值或其绝对值等于K的第一个结点可以被保留.同时,所有被删除的结点必须被保存在另外一个链 ...
- 02.swoole学习笔记--UDP服务器
<?php //创建服务器 $serv=,SWOOLE_PROCESS,SWOOLE_SOCK_UDP); //bool $swoole_server->on(string $event, ...
- 2020寒假 05 ——eclipse安装scala环境
在eclipse中安装Scala环境 1安装eclipse插件步骤,点击help,选择Eclipse Marketplace 2.输入Scala,点击go 3.选择搜索到的Scala IDE 4.7. ...
- 063、Java中输出信息
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- 格雷码(Grey Code)生成规则
(1) Grey码在FPGA实际应用中是实用的码,在8421BCD码累加计数器中,如果寄存器需要发生多位(两位或者以上)的跳变,会出现中间态,这样作为组合逻辑的输入是不稳妥的. 下面看两个中间态的例子 ...
- git克隆项目后的操作
使用https路径clone代码后,如果直接提交,会出现两个问题: 1. 提交的用户是操作系统登陆用户: 2. 需要重复输入用户名和密码: 一 设置用户名和邮箱 git config user.nam ...
- 吴裕雄--天生自然java开发常用类库学习笔记:排序及重复元素说明
import java.util.Set ; import java.util.HashSet ; class Person{ private String name ; private int ag ...
- Java 日期与时间
章节 Java 基础 Java 简介 Java 环境搭建 Java 基本语法 Java 注释 Java 变量 Java 数据类型 Java 字符串 Java 类型转换 Java 运算符 Java 字符 ...