`
Irving_wei
  • 浏览: 130343 次
  • 性别: 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工厂。

分享到:
评论

相关推荐

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

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

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

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

    设计模式解析-英文

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

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

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

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

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

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

    深刻理解重构和设计模式之间的关系,以及如何借助设计模式重构软件系统; 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

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

    23种设计模式的java源代码----容易理解的源代码

    里面包含了23中设计模式源代码,其中包括工厂模式(Factory)、单例(Singleton)、观察者模式(Observer)、适配器模式(Adapter)、Template模式、Decorate模式、proxy模式等 这些设计模式源代码更容易理解

    研磨设计模式.part3(共4个)

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

    研磨设计模式.part2(共4个)

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

    研磨设计模式.part4(共4个)

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

    研磨设计模式.part1(共4个)

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

    23种设计模式的java源代码

    里面包含了23中设计模式源代码,其中包括工厂模式(Factory)、单例(Singleton)、观察者模式(Observer)、适配器模式(Adapter)、Template模式、Decorate模式、proxy模式等 这些代码对于初学者看起来稍微复杂一些,我...

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

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

    敏捷软件开发:原则、模式与实践.pdf

    第16章 SINGLETON模式和MONOSTATE模式 第17章 NULL OBJECT模式 第18章 薪水支付案例研究:第一次迭代开始 第19章 薪水支付案例研究:实现 第四部分 打包薪水支付系统 第20章 包的设计原则 第21章 FACTORY模式 ...

Global site tag (gtag.js) - Google Analytics