`
leoyu
  • 浏览: 12070 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

第二个设计模式:工厂方法

阅读更多
 
上一节中已经介绍了简单工厂,我想大家应该有一定认识了。然后简单工厂有它自身的局限性~今天继续为大家介绍工厂模式之工厂方法 .
UML示意图:
组成部分:
1.抽象工厂
2.具体工厂
3.抽象产品
4.具体产品
代码例子:
1.       抽象工厂
package com.eekq.creator.factorymethod;
 
public interface IFactory {
    //抽象工厂,工厂方法
    public IProduct factory();
}
2.       抽象产品
package com.eekq.creator.factorymethod;
 
public interface IProduct {
    //抽象产品,抽象方法
    public void print();
}
3.       具体产品:可以有N个同类产品,在这里我以两个产品为例
产品1
package com.eekq.creator.factorymethod;
 
public class Product1 implements IProduct {
 
    public void print() {
        // TODO 自动生成方法存根
        //示例方法
        System.out.println("Product1.print()");
    }
}
产品2
package com.eekq.creator.factorymethod;
 
public class Product2 implements IProduct {
 
    public void print() {
        // TODO 自动生成方法存根
        System.out.println("Product2.print()");
    }
 
}
4.       具体工厂:针对具体产品的具体工厂,有N类产个产品就有N个具体工厂
工厂1
package com.eekq.creator.factorymethod;
 
public class Factory1 implements IFactory {
 
    public IProduct factory() {
        // TODO 自动生成方法存根
        return new Product1();
    }
 
}
工厂2
package com.eekq.creator.factorymethod;
 
public class Factory2 implements IFactory{
 
    public IProduct factory() {
        // TODO 自动生成方法存根
        return new Product2();
    }
 
}
5.客户端的调用
package com.eekq.creator.factorymethod;
 
public class Main {
 
    /**
     *@paramargs
     */
    public static void main(String[] args) {
        // TODO 自动生成方法存根
        //工厂方法示例
        IFactory factory = new Factory1();
        IProduct product1 = factory.factory();//获取工厂1
        product1.print();//执行具体产品功能
       
        IFactory factory2 = new Factory2();
        IProduct product2 = factory2.factory();//获取工厂1
        product2.print();//执行具体产品功能
 
    }
 
}
6.输出结果
Product1.print()
Product2.print()
7.总结
工厂方法模式保持了简单工厂的优点,同时克服了简单工厂的缺点。工厂方法的核心在于抽象工厂,这样如果有新的产品加入,就实现抽象工厂就可以了。这也具有了可扩展性,同时也满足了‘开-闭’原则
 作者:飞行鱼 QQ:6868861 推荐J2EE群:7715552


 

分享到:
评论

相关推荐

    java设计模式:DAO模式.doc

    java设计模式:DAO模式 DAO设计模式 DAO的理解 1、DAO其实是利用组合工厂模式来解决问题的,并没有带来新的功能,所以学的 其实就是个思路。 2、DAO理论上是没有层数限制的。 3、DAO的各层理论上是没有先后的。 DAO...

    C#23种设计模式_示例源代码及PDF

    工厂方法模式: 而是将具体创建的工作交给子类去做, 工厂方法模式 核心工厂类不再负责所有产品的创建, 成为一个抽象工厂角色, 仅负责给出具体工厂类必须实现的接口, 而不接触哪一个产品类应 当被实例化这种细节...

    java设计模式

    目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式

    应用了设计模式之简单工厂模式的计算器

    完成了,但感觉这也没啥特别的,程序界面黑布隆冬的,内部结构也是最最平常的面向对象,于是我应用了《大话设计模式》这本书中的第一个模式——简单工厂模式,看上去还不错。界面的话,也就是输出的语句变了,system...

    设计模式解析-英文

     第1章 面向对象范型 2 第2章 UML 21 第二部分 传统面向对象设计的局限 第3章 对代码灵活性要求很高的问题 33 第4章 标准的面向对象解决方案 41 第三部分 设计模式 第5章 设计模式简介 53 第6章 Facade模式 65 第7...

    设计模式第二版

    设计模式与极限编程和敏捷开发的关系,以及设计模式如何有助于二者的实施;为什么测试是高质量编程的一个优化原则;为什么使用工厂(factory)实例化和管理对象至关重要;其中本文在这些基础之上还进一步深化和澄清了...

    《Java设计模式(第2版)》

    二、设计模式遵循的原则有6个: 1、开闭原则(Open Close Principle) 对扩展开放,对修改关闭。 2、里氏代换原则(Liskov Substitution Principle) 只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,...

    二十三种设计模式【PDF版】

    设计模式之 Factory(工厂方法和抽象工厂) 使用工厂模式就象使用 new 一样频繁. 设计模式之 Builder 汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder 模式就是将这...

    小D深入浅出设计模式+框架源码剖析实战

    ├─第二章 想成为架构师的你,不可不知道的设计模式精髓 │ 2.1设计模式的六大原则你知道多少.mp4 │ 2.3多个业务场景浏览-设计模式使用前后的区别.mp4 │  ├─第三章 创建型设计模式-单例设计模式和应用 │ ...

    吉林大学软件学院卓班设计模式第二次作业

    请试一试将重载的构造函数改成(简单)工厂方法,使得语义更清晰。 3. 考察完成的代码,你会发现: a) 在构造、拷贝、赋值时,会将各子图都重新构造了一遍,拷贝和赋值使用的也是深拷贝和深赋值,这样在合成复杂的字符...

    精通python设计模式与源码

    本书用实际生活中的例子带你了解...第二部分介绍处理一个系统中不同实体(类、对象等)之间关系的设计模式,包括外观模式、享元模式等;第三部分介绍处理系统实体之间通信的设计模式,包括责任链模式、观察者模式等。

    javascript设计模式 – 工厂模式原理与应用实例分析

    我们虽然在第二个demo中做了一些优化,但是我们需在使用时明确指定执行方法的名字,这无疑提高了使用成本。那如何实现增加新产品而不影响已有代码?工厂模式应运而生。 定义:定义一个用于创建对象的接口,让子类...

    设计模式--可复用面向对象软件的基础

    第二章 实例研究:设计一个文档编辑器 2.1 设计问题 2.2 文档结构 2.3 格式化 2.4 修饰用户界面 2.5 支持多种视感标准 2.6 支持多种窗口系统 2.7 用户操作 2.8 拼写检查和断字处理 2.9 小结 第三章 创建型模式 3.1 ...

    第二节 设计模式之创建模式1

    介绍意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的问题。何时使用:我们明确地

    OBJECTIVE-C编程之道 IOS设计模式解析电子书+源代码

    案例分析:设计一个应用程序2.1 想法的概念化2.2 界面外观的设计2.3 架构设计2.3.1 视图管理2.3.2 如何表现涂鸦2.3.3 如何表现保存的涂鸦图2.3.4 用户操作2.4 所用设计模式的回顾2.5 总结第二部分 对象创建第3章 ...

    js-pattern:js设计模式

    单例模式:保证一个对象只有一个实例,第二次创建的实例和第一次创建的完全一样。 工厂模式:提供创建对象的方法。 迭代器模式:为遍历一个数据结构提供方法。 装饰者模式:增强普通对象的功能,按照顺序进行装饰。 ...

    工厂数据库管理系统.doc

    二、设计题目:工厂数据库管理系统 已知技术参数和设计要求: 需求说明及要求 题目:工厂数据库管理系统 某工厂需建立一个管理数据库存储以下信息: 1. 工厂包括厂名和厂长名。 2. 一个厂内有多个车间,每个车间有...

    云南大学软件学院设计模式实验报告

    云南大学软件学院设计模式实验报告,总共四次实验,第一次:策略者模式 第二次:装饰者模式 第三次:抽象工厂模式 第四次:命令模式,包括四次实验每个模式的UML图,仅供学弟学妹们参考。

    浅析php工厂模式

    本系列文章来总结一下设计模式在PHP中的应用,这是第二篇创建型模式之工厂模式。 设计模式的一般介绍在第一篇文章讲了,这里就不重复。 工厂模式 实现:定义一个用于创建对象的接口,让子类决定实例化哪一个类。 ...

Global site tag (gtag.js) - Google Analytics