设计模式之Factory工厂模式的好处
最最直观的好处就是吹牛逼,看着要比普通创建对象要屌
好看
一般情况下,我们创建对象使用的是new。
Sample sample=new Sample();
然而,实际情况会比这样复杂的多,比如说
Sample sample=new Sample(超级无敌长、超级无敌多、超级无敌难记、超级无敌容易出错的参数);
这时候,我们的代码会非常难看了,相当于把一箩筐的鸡蛋全放在一个篮子里,维护起来将会很困难,也容易出错。
避免new很多东西
假如说我们要创建一个对象,而创建这个对象必须要创建很多个对象才可以实现相应的功能,可想而知,这样开发难度和维护难度会很高。
举个例子:
制造一个宝马汽车X3的车,一般情况我们需要制造轮子、引擎、座位等等;可是如果有一个BMWX3Factory的话,调取该Factory就可以直接制造。
避免混淆
Sample sample=new Sample(超级无敌长、超级无敌多、超级无敌难记);
Sample sample=new Sample(超级无敌长、超级无敌多、超级无敌难记、超级无敌容易出错的参数);
Sample sample=new Sample(超级无敌长、超级无敌多、超级无敌好记、超级无敌容易出错的参数);
这三个创建对象的方法非常相似,就只有一个参数不一样,有时候就是会弄混!
实际例子
我们知道数据库有多种oracle,db2,sql server,如果,我们每次都要自己初始化连接对象将会蛋疼,因为每次都要自己实现一遍,每次实现的代码有可能都不一样,出错了就会很难维护。
那么通过使用工厂模式,我们只需要记住创建对象的名字就好了,剩下的交给Factory创建就好了,也方便后期的维护。
比如说,DB2的SSL连接
DBconnection sample = DBFactory.createDB2SSLConnection()
比如说,SQL的连接
DBconnection sample = DBFactory.createSQLConnection()
如果说是建造者模式的话,就是一块一块参数的拼接,同样很方便
DB2的SSL连接
DBconnection sample = new DBconnection().withDBtype(DB).withHTTPS()
想要看到更多玮哥的学习笔记、考试复习资料、面试准备资料?想要看到IBM工作时期的技术积累和国外初创公司的经验总结?
敬请关注:
设计模式之Factory工厂模式的好处的更多相关文章
- 设计模式之Factory工厂模式
在上一章,模板模式中,我们在父类规定处理的流程,在子类中实现具体的处理.如果我们将该模式用于生成实例,便演变成了Factory模式,即工厂模式. 在Factory模式中,父类决定实例的生成方式,但并不 ...
- 设计模式之简单工厂模式(Simple Factory)
原文地址:http://www.cnblogs.com/BeyondAnyTime/archive/2012/07/06/2579100.html 今天呢,要学习的设计模式是“简单工厂模式”,这是一个 ...
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
原文:乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factor ...
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
jquery提供的serialize方法能够实现. $("#searchForm").serialize();但是,观察输出的信息,发现serialize()方法做的是将表单中的数 ...
- JavaScript设计模式一:工厂模式和构造器模式
转自:http://segmentfault.com/a/1190000002525792 什么是模式 前阵子准备期末考试,挺累也挺忙的,实在闲不得空来更新文章,今天和大家说说javascript中的 ...
- 桥接模式及C++实现 C++设计模式-AbstractFactory抽象工厂模式
桥接模式及C++实现 桥接模式 先说说桥接模式的定义:将抽象化(Abstraction)与实现化(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式之一 ...
- java设计模式---三种工厂模式
工厂模式提供创建对象的接口. 工厂模式分为三类:简单工厂模式(Simple Factory), 工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory).GOF在 ...
- iOS设计模式 - (3)简单工厂模式
iOS设计模式 - (3)简单工厂模式 by Colin丶 转载请注明出处: http://blog.csdn.net/hitwhylz/article/ ...
- 设计模式-Runoob:工厂模式
ylbtech-设计模式-Runoob:工厂模式 1.返回顶部 1. 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供 ...
随机推荐
- 读《Deep Learning Tutorial》(台湾大学 李宏毅 深度学习教学ppt)后杂记
原ppt下载:pan.baidu.com/s/1nv54p9R,密码:3mty 需深入实践并理解的重要概念: Deep Learning: SoftMax Fuction(输出层归一化函数,与sigm ...
- TCP协议学习总结(中)
很多人都说TCP协议是一个十分复杂的协议,在学习当中,我对协议每一个问题都分解学习后,每一个分解我都能体会和理解它的要点,并不难理解.但我把这些拆分的细节合并后,确认感觉这样一个协议相对“臃肿”但又好 ...
- 微信小程序wx.request请求用POST后台得不到传递数据
微信小程序的wx.request请求,method设为POST并向后台传递数据,但从后台返回的信息来看后台并没有获得传递的数据 wx.request({ url: 'url' ...
- ubuntu系统界面改变
主题:https://gitzab.com/Anduin/GNOME-OSX-II-Theme.git图标:https://github.com/keeferrourke/la-capitaine-i ...
- [Swift]LeetCode33. 搜索旋转排序数组 | Search in Rotated Sorted Array
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- [Swift]LeetCode552. 学生出勤记录 II | Student Attendance Record II
Given a positive integer n, return the number of all possible attendance records with length n, whic ...
- [Swift]LeetCode749. 隔离病毒 | Contain Virus
A virus is spreading rapidly, and your task is to quarantine the infected area by installing walls. ...
- ELK之filebeat、logstash多个topic配置
启动多个进程收集日志.直接output到kafka,output到不同的topiccat filebeat.ymlfilebeat.prospectors:- input_type: log path ...
- 分享几个 SpringBoot 实用的小技巧
前言 最近分享的一些源码.框架设计的东西.我发现大家热情不是特别高,想想大多数应该还是正儿八经写代码的居多:这次就分享一点接地气的: SpringBoot 使用中的一些小技巧. 算不上多高大上的东西, ...
- 【java设计模式】(3)---代理模式(案例解析)
设计模式之代理模式 一.概述 1.什么是代理模式? 解释第一遍:代理模式主要由三个元素共同构成: 1)一个接口,接口中的方法是要真正去实现的. 2)被代理类,实现上述接口,这是真正去执行接口中方法的类 ...