`
Irving_wei
  • 浏览: 130887 次
  • 性别: Icon_minigender_1
  • 来自: Heaven
社区版块
存档分类
最新评论

对Singleton模式和Factory模式的理解

阅读更多

  昨天晚上和毛驴讨论到很晚,关于单态模式和工厂模式。

  首先来回忆一下,什么是单态模式和工厂模式。单态模式说得明了一点就是:一个类产生的所有对象都是同一个。为什么要将一个类的对象都限制成一个呢?这是为了在调用这个类的方法的时候,避免在Web开发过程中产生过多的对象,频繁的调用构造方法,然后再调用对象的销毁方法,这样浪费了容器的很多资源。工厂模式,顾名思义就是将许多类放到一个类Factory中进行“集中实例化”,就像是一个工厂一样,以后要是具体的某一个类A要用到其中的一个类B的实例,就可以直接实例化 Factory的一个对象,然后通过这个对象来调用类Factory中获取B类实例的方法获得B的实例,而不需要在自己的类中去new类B的对象。要是A类只用到了少量几个类,这样的做法似乎不是很奏效,但是如果A用到了大部分的类,而且个数是比较多的,这样的情况下,就只需要在A类中new一个Factory的实例,然后就可以很容易获取到它所需要的各个类的实例了。因为Factory中已经包含了所有类的实例获取方法,这也许就是“工厂”的由来吧。

   如何实现“单态”?我们知道,当一个类的构造器的可见度设置成“private”的时候,就不能在类外调用它的构造方法了。就是说只能在类的内部调用它的方法,而在类内部调用构造方法,调用几次构造方法是我们可以控制的。在类的内部设置一个可以获得类实例的方法来获得类的实例,为了使类的对象是唯一的,也就是说是满足单态模式的目的的,就应该将返回的类对象设置成一个static类型的,接下来在类的实现过程中,要判断是否已经存在了一个类的对象,要是存在就直接返回对象不调用构造方法,要是不存在就调用构造方法,生成一实例。这样,在类外调用它的时候,不论调用多少次,都是返回同一个实例。

   Spring对工厂模式的实现,是通过配置文件和IoC容器来完成的。配置文件给每个bean创建了一个ID,这是唯一的,就是通过这个ID来告诉IoC要调用哪个bean的构造方法,而调用构造方法也不是我们要操心的问题,我们只要使用IoC给我们创建的实例就足够了。这样看来,IoC容器是一个实现了Factory设计模式的巨大Bean工厂。

分享到:
评论

相关推荐

    人人都懂设计模式 人人都懂设计模式

    创建型模式主要解决对象的创建问题,例如 Singleton 模式和 Factory 模式。结构型模式主要解决结构的设计问题,例如 Bridge 模式和 Composite 模式。行为型模式主要解决行为的实现问题,例如 Observer 模式和 ...

    JavaScript设计模式与开发实践.pdf

    第二部分是核心部分,通过一步步完善的代码示例,由浅入深地讲解了16个设计模式,包括 singleton模式、Factory模式、Abstract Factory模式、Builder模式、Prototype模式、Adapter模式、Bridge模式、Composite模式、...

    结城浩《图解设计模式》笔记

    本笔记主要讲述了设计模式的基本概念和应用,包括 Iterator 模式、Adapter 模式、TemplateMethod 模式、FactoryMethod 模式和 Singleton 模式等。通过对这些设计模式的详细解释和示例代码的分析,我们可以更好地理解...

    Java设计模式,并加上个人理解

    4. 单例模式 (Singleton) 5. 抽象工厂模式 (Abstract Factory) 6. 策略模式 (Strategy Pattern) 7. 适配器模式 (Adapter Pattern) 8. 模板方法模式 (Template Pattern) 9. 建造者模式 (Builder Pattern)...

    研磨设计模式(完整带书签).part2.pdf

    中高级内容则深入探讨如何理解这些模式,包括模式中蕴涵什么样的设计思想,模式的本质是什么,模式如何结合实际应用,模式的优缺点以及与其他模式的关系等,以期让读者尽量去理解和掌握每个设计模式的精髓所在。...

    Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析1

    Tomcat 系统架构与设计模式,第 2 部分:设计模式分析 1 本文将对 Tomcat 系统架构与设计模式...Tomcat 的系统架构与设计模式紧密相连,我们可以通过对设计模式的分析和应用来更好地理解 Tomcat 的架构和设计思想。

    java 23种设计模式及具体例子

    使用设计模式可以让代码更容易被他人理解、保证代码可靠性、提高代码的重用性。 一、设计模式的分类 设计模式可以分为三大类:创建型模式、结构型模式、行为型模式。 1. 创建型模式 创建型模式共五种: * 工厂...

    Tomcat系统架构与设计模式[整理].pdf

    Tomcat 系统架构与设计模式 Tomcat 系统架构是 Apache 软件基金会的一款开源的 Java Web ...通过对 Tomcat 的系统架构和设计模式的分析,我们可以更好地理解 Tomcat 的工作原理,提高自己的编程能力和设计水平。

    设计模式解析-英文

    各种工厂模式 242 第21章 Singleton模式和Double-Checked Locking模式 249 第22章 Object Pool模式 257 第23章 Factory Method模式 267 第24章 工厂模式的总结 272 第八部分 终点与起点 第25章 设计模式回顾:总结与...

    研磨设计模式(完整带书签).part1.pdf

    中高级内容则深入探讨如何理解这些模式,包括模式中蕴涵什么样的设计思想,模式的本质是什么,模式如何结合实际应用,模式的优缺点以及与其他模式的关系等,以期让读者尽量去理解和掌握每个设计模式的精髓所在。...

    设计模式复习题.doc

    - 使用观察者模式来定义对象之间的一对多关系 - 使用适配器模式来封装对象并提供不同的接口 4. 设计模式的设计原则: - 开闭原则:扩展开放,修改关闭 - 里式代换原则 - 合成聚合原则 - 依赖倒转原则 - ...

    C++设计模式基础教程.pdf

    行为型模式主要用来对类或对象怎样交互和怎样分配职责进行描述,包括11种设计模式: 13. 模板方法模式(Template Method Pattern):使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 14. 命令...

    [Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker

    本书创造性地将这些模式分为5大类别,以充分展现各个模式的重要特征,并结合uml类图与对应的java程序,便于读者更好地理解。全书给出了大量的练习,作为对读者的挑战,以启发思考,督促读者通过实践练习的方式来掌握...

    第14讲谈谈你知道的设计模式1

    创建型模式,是对对象创建过程的各种问题和解决方案的总结,包括各种工厂模式(Factory、Abstract Factory)、单例模式(Singleton)、构建器模式(Builder)、原型模式(ProtoType)等。 结构型模式,是针对软件...

    北京中科信软 面向对象设计模式培训

    深刻理解重构和设计模式之间的关系,以及如何借助设计模式重构软件系统; 11. 创建型模式 12. Singleton、Factory Method、Builder、Prototype、Abstract Factory 13. Monostate、Registry、Factory、Plugin 14. ...

    设计模式:可复用面向对象软件的基础--详细书签版

    2.5.3 abstract factory模式 35 2.6 支持多种窗口系统 35 2.6.1 我们是否可以使用abstract factory 模式 35 2.6.2 封装实现依赖关系 35 2.6.3 window和windowimp 37 2.6.4 bridge 模式 40 2.7 用户操作 40 ...

    研磨设计模式-part2

    中高级内容则深入探讨如何理解这些模式,包括模式中蕴涵什么样的设计思想,模式的本质是什么,模式如何结合实际应用,模式的优缺点以及与其他模式的关系等,以期让读者尽量去理解和掌握每个设计模式的精髓所在。...

    设计模式 GOF 23

    2.5.3 Abstract Factory模式 35 2.6 支持多种窗口系统 35 2.6.1 我们是否可以使用Abstract Factory 模式 35 2.6.2 封装实现依赖关系 35 2.6.3 Window和WindowImp 37 2.6.4 Bridge 模式 40 2.7 用户操作 40 2.7.1 ...

    研磨设计模式-part4

    中高级内容则深入探讨如何理解这些模式,包括模式中蕴涵什么样的设计思想,模式的本质是什么,模式如何结合实际应用,模式的优缺点以及与其他模式的关系等,以期让读者尽量去理解和掌握每个设计模式的精髓所在。...

    研磨设计模式-part3

    中高级内容则深入探讨如何理解这些模式,包括模式中蕴涵什么样的设计思想,模式的本质是什么,模式如何结合实际应用,模式的优缺点以及与其他模式的关系等,以期让读者尽量去理解和掌握每个设计模式的精髓所在。...

Global site tag (gtag.js) - Google Analytics