简单工厂模式
来源:互联网 发布:mac brew install pip 编辑:程序博客网 时间:2024/06/04 17:59
*1.为什么会出现简单工厂类?
* 答:在GOF那本开山之作中是没有“简单工厂模式”的,之所以坊间流行简单工厂模式,是因为它太基础了!
* 太基础的东西就应该值得铭记。
* 例如在现实生活中,有专门的工厂生产产品,而不是由我们在使用时才来由我们自己生产。注意了,这里面就涉及到了涉及模式的几个原则,
* “有专门的工厂生产产品“表明该工厂只是用来生产产品,即单一职责原则,
* “而不是在我们使用时由自己生产”指的是,我们需要将创建对象和使用对象分开,符合单一职责原则。
* 为此,出现了“简单工厂模式“
*
* 2.什么是简单工厂类?
* 答:简单工厂类就是为了生产对象而专门设计的类
* 假设 我们要生产20元,100元人民币。对于这个过程,我们即可使用简单工厂模式。
* 抽象类:Rmb,代表的是广大人民币都具有的属性
* 具体产品类:TwentyYuan,HundredYuan,代表的是具体的每一种对象产品
* 工厂类:Factory,用来生产Rmb这个对象的。
* 客户端类:Client,用来测试
(5)Client类
* 答:在GOF那本开山之作中是没有“简单工厂模式”的,之所以坊间流行简单工厂模式,是因为它太基础了!
* 太基础的东西就应该值得铭记。
* 例如在现实生活中,有专门的工厂生产产品,而不是由我们在使用时才来由我们自己生产。注意了,这里面就涉及到了涉及模式的几个原则,
* “有专门的工厂生产产品“表明该工厂只是用来生产产品,即单一职责原则,
* “而不是在我们使用时由自己生产”指的是,我们需要将创建对象和使用对象分开,符合单一职责原则。
* 为此,出现了“简单工厂模式“
*
* 2.什么是简单工厂类?
* 答:简单工厂类就是为了生产对象而专门设计的类
* 3.简单工厂类该怎么实现?
* 答:直接上例子:* 假设 我们要生产20元,100元人民币。对于这个过程,我们即可使用简单工厂模式。
* 抽象类:Rmb,代表的是广大人民币都具有的属性
* 具体产品类:TwentyYuan,HundredYuan,代表的是具体的每一种对象产品
* 工厂类:Factory,用来生产Rmb这个对象的。
* 客户端类:Client,用来测试
* 4.简单工厂类实现过程
我还是觉得直接上代码比较好,如下:
(1)Rmb类:
package liu.shen.util;/** * Rmb抽象类 * @author Object * */public abstract class Rmb { //表示纸币的价值属性 abstract void value();//abstract 与{}不能共存 //abstract void display();//}
(2)TwentyYuan类
package liu.shen.util;/** * TwentyYuan * @author Object * */public class TwentyYuan extends Rmb{@Overridevoid value() {// TODO Auto-generated method stubSystem.out.println("I'm a ¥20!");}}
(3)HundredYuan类
package liu.shen.util;/** * HundredYuan * @author Object * */public class HundredYuan extends Rmb{@Overridevoid value() {// TODO Auto-generated method stubSystem.out.println("I'm a ¥100!");}}
(4)SimpleFactory类
package liu.shen.util;/** *1. 简单工厂类 *2. @author Object *3.简单工厂模式,其实就是在SimpleFactory中使用new语句来生成产品对象而已。 * * */public class SimpleFactory {Rmb rmb1, rmb2;//设置并取值public Rmb getRmb1() {rmb1 = new TwentyYuan();return rmb1;}//设置并取值public Rmb getRmb2() {rmb2 = new HundredYuan();return rmb2;}}
(5)Client类
package liu.shen.util;/** * 客户端类 * @author Object * */public class Client {public static void main(String [] args){SimpleFactory factory = new SimpleFactory();Rmb rmb1 ,rmb2;//这里是面向抽象编程的精粹rmb1 = factory.getRmb1();rmb2 = factory.getRmb2();//通过调用方法显示出两个成员变量的不同rmb1.value();rmb2.value();}}
*5.运行结果
* 6.总结
我们可以看到简单工厂模式就是
(1)将产品抽象化,使其可以作为复用类。满足我们所说的面向抽象编程。即依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。换言之,应该面向抽象编程,而不是针对细节编程。
(2)使用工厂类类专门生产产品。
*/ 0 0
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂和工厂模式
- 简单工厂和工厂模式
- 1,工厂模式--简单工厂
- 简单工厂和工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂模式和抽象工厂
- 占位14
- 占位15
- Unity关于Time.timeScale详解
- Ubuntu 使用Openwrt SDK交叉编译ipk包过程全纪录(超多图)
- 一点点有助于巧用RecyclerView的小技巧
- 简单工厂模式
- 虚拟机窗口不能调整大小如何解决?
- 创建activity的要点
- AccessDB Tomcat 连接池设置
- 占位16
- 占位17
- group by分组、having() 筛选组的用法
- 占位18
- 圣杯布局&&双飞翼布局