Head First Design Pattern 读书笔记(4) 工厂模式
2019独角兽企业重金招聘Python工程师标准>>>
Head First Design Pattern 读书笔记(4) Factory Pattern 工厂模式
##Factory Pattern 类图 ##定义
- 工厂模式:工厂模式严格意义上不算是设计模式,而是一种编程习惯,将创建某一类“产品”的代码封装起来,达到松耦合的目的。
- 工厂方法模式:定义一个创建对象的接口,但是由子类自己决定创建逻辑。工厂方法让类把实例化延迟到子类。
- 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确制定具体类。
##几个OO的原测
- 依赖倒置原测(Dependency Inversion Principle):要依赖于抽象,而不是依赖于具体实现。--》类似与面向接口编程,不管是高层还是底层模块,都应该依赖于抽象。
依赖倒置在编码中的具体实践:- 变量不可以持有具体的类引用 --》如使用工厂的方式代替new方式创建对象。
- 不要让类派生自具体类。
- 不要覆盖基类中已实现的方法。
##关于工厂模式
- 简单工厂与工厂方法的区别:简单工厂仅封装了产品创建代码,如果新增了产品,需要修改工厂类的代码;工厂方法将创建产品的逻辑延迟到子类中去实现,所以可以不修改原有代发动态地拓展新产品。
- 工厂方法与抽象工厂的区别:抽象工厂将产品划分为多个“产品家族”,每一个“族”的产品在一个具体的工厂类中生产;而工厂方法通过继承父类,重写创建逻辑产生特定产品,生产的产品没有类别等级的概念,全部属于统一类产品。
- 抽象工厂的具体工厂类创建产品的代码是很难拓展,如果要在“产品族”中增加新的产品,需要修改工厂类的创建代码。
转载于:https://my.oschina.net/u/1010578/blog/366222
Head First Design Pattern 读书笔记(4) 工厂模式相关推荐
- 设计模式读书笔记-----抽象工厂模式
在工厂方法模式中,我们使用一个工厂创建一个产品,也就是说一个具体的工厂对应一个具体的产品.但是有时候我们需要一个工厂能够提供多个产品对象,而不是单一的对象,这个时候我们就需要使用抽象工厂模式. 在讲解 ...
- 《自己动手写操作系统》读书笔记——初识保护模式
<自己动手写操作系统>读书笔记--初识保护模式 http://www.cnblogs.com/pang123hui/archive/2010/11/27/2309930.html 书本第三 ...
- 设计模式之禅读书笔记—行为类模式
设计模式之禅读书笔记-行为类模式 PDF下载地址 责任链模式 命令模式 解释器模式 迭代器模式 中介者模式 备忘录模式 观察者模式 状态模式 策略模式 模板方法模式 访问者模式 责任链模式 定义:使多 ...
- 【chromium】常用设计模式:委托模式(Delegate Pattern)、观察者模式、 工厂模式。
文章目录 对象行为型模式 观察者模式(Observer Pattern) 类创建型模式 工厂模式(Factory Pattern) Delegate 和 client 委托模式(Delegate Pa ...
- 设计模式之笔记--抽象工厂模式(Abstract Factory)
抽象工厂模式(Abstract Factory) 定义 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 类图 描述 多个抽象产品 ...
- 设计模式之笔记--简单工厂模式(Simple Factory)
简单工厂模式(Simple Factory) 类图 描述 简单工厂: 一个抽象产品类,可以派生多个具体产品类: 一个具体工厂类: 工厂只能创建一个具体产品. 应用场景 汽车接口 public inte ...
- JAVA设计模式笔记(简单工厂模式)
有一个水果加工工厂,我们的需求是实现加工水果的功能.常见的做法是创建一个水果抽象类,写一个抽象的加工方法,然后创建具体的水果类去继承抽象类,再去实现抽象方法,最后客户端再去新建对象实例. public ...
- 【Java学习笔记】工厂模式
工厂模式 一.工厂模式的作用 二.简单工厂模式 三.工厂方法模式 四.抽象工厂模式 五.总结 一.工厂模式的作用 原本我们是用new来创建新对象,而现在我们用一个工厂类来代替创建新对象的工作 实现创建 ...
- 《设计模式》读书笔记——创建型模式
设计模式 创建模式 定义: 创建型模式抽象了实例化过程.他们帮助一个系统独立于如何创建.组合和表示它的那些对象 一个类创建型模式使用继承改变被实例化的类,而一个对象创建模式是将实例化委托给另一个对象 ...
最新文章
- Ubuntu 安装 ffmpeg
- 赤兔四足机器人的作用_跑得快,打不死!清华大学开发“小强”机器人,壮汉狂踩也挡不住前进步伐...
- layuiajax提交表单控制层代码_究竟怎么用Restful风格编代码必看这篇。(二)
- k8s edit命令使用示例
- 最新综述:推荐系统的Bias问题和Debias方法
- 剑指 Offer 11. 旋转数组的最小数字 LCOF
- Flask中路由系统以及蓝图的使用
- leetcode13
- hdu2243考研路茫茫——单词情结
- 编译原理初学者入门指南
- 数学与逻辑思维(一)
- AVR单片机教程——DAC
- 德乐SM2258XT固态硬盘DERLER T-1不认盘量产修复工具
- 新能源车如何走出“一票否决”的窠臼?
- 逻辑谬误_跟上的谬误
- 写论文的公式怎么写最便捷?
- Python学习_案例for循环嵌套
- 漏洞篇(SQL注入一)
- 火狐浏览器怎么录制屏幕_轻松获取Firefox中的屏幕截图
- mac os操作系统安装