简单工厂模式--不是GOF的23个的模式
前言:来自《Head First 设计模式》,不涉及任何商务往来,仅为学习使用,作为参照笔记。简单工厂模式其实不是设计模式,反而是比较像是一种编程习惯。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
简单工厂模式类图
产品分很多类型。
制作一个产品。
一、 工厂模式有了简单工厂模式,工厂方法模式和抽象工厂模式。
解决某些松耦合的OO设计。
除了使用new操作符之外,还有更多制造对象的方法。
目的为了避免公开实例化。
经验:初始化经常造成“耦合”问题。
二、 思考:关于new的问题。每次使用new时,就是针对实现编程,如何避免这种针对实现编程?
前提明白,代码绑着具体类会导致代码更脆弱,更缺乏弹性。
模式目的:(1)要使用接口让代码具有弹性。(2)但是还是的建立具体类的实例。
Java只提供一个new关键词创建对象。
对修改关闭,对扩展开放。
三、 把变化的代码搬到另一个对象中,我们称这个新对象为“工厂”。注意是对象。工厂(factory)处理创建对象的细节。
优势:工厂类可以有许多客户。
四、 问题:把工厂定义成一个静态方法的必要?
简单工厂模式是属于创建型模式,又叫做静态工厂方法。利用静态方法定义一个简单的工厂,常备称为静态工厂。为何使用静态方法?因为不需要使用创建对象的方法来实例化对象。
但有缺点:不能通过继承来改变创建方法的行为。
正如前言:简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。有些编程人员习惯误认为是“工厂模式”。
经验补充:在设计模式中,所谓的“实现一个接口”并“不一定”表示“写一个类,并利用implement关键词来实现某个Java接口”。“实现一个接口”泛指“实现某个超类型(可以是类或接口)的某个方法。”
如有好的建议,可留言或发至笔者邮箱:fzb_xxzy@163.com