zoukankan      html  css  js  c++  java
  • 工厂模式

    什么是工厂模式?

    工厂模式属于创建型模式,它提供了一种创建对象的最佳方式。工厂模式关心的是最终产出(创建)的对象, 而不关心创建的过程。举个例子,好比您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。

    为什么要用工厂模式?(优点?) 为什么不直接用new?

    平时我们创建对象的时候通常是通过new()的方式,如果我们需要创建对象时做点初始化的工作,比如赋值,我们可能会想到在构造函数中完成,但是有时初始化工作并不是赋值那么简单时,可能会是一段很长的代码,如果写入构造函数中,代码就会显得很难看,而且有悖于Java面向对象的原则,面向对象的封装(Encapsulation)和分派(Delegation)告诉我们,尽量将长的代码分派“切割”成每段,将每段再“封装”起来(减少段和段之间耦合联系性),这样,就会将风险分散,以后如果需要修改,只要更改每段,不会再发生牵一动百的事情。

    优点:

    (1)给系统带来更大的可扩展性和尽量少的修改量。

    (2)一个调用者想创建一个对象,只要知道其名称就可以了。

    (3)屏蔽产品的具体实现,调用者只关心产品的接口。

    补充:缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。

    实例化对象的方式?(5种)

    (1)     new

    (2)     通过反射,获得class对象后,我们就可以通过class对象.newInstance()来获得实际对象

    详细介绍请查阅  百度经验 -- https://jingyan.baidu.com/article/a948d65116bdf80a2ccd2e67.html

    Spring中哪里用到了工厂模式?

    Spring中通过BeanFactory、ApplicationContext创建Bean对象时使用到了工厂模式。

    除了Spring,哪些场景用到工厂模式?

    如果明确了要在不同条件下创建不同实例时就可以使用工厂模式(何时使用?)。

    使用场景:

    1、数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。

    2、日志记录器:记录可能记录到本地硬盘或者远程服务器等,用户可以选择记录日志到什么地方。

    示例

    请查阅 菜鸟教程 -- https://www.runoob.com/design-pattern/factory-pattern.html

    常见面试题:

    (1) 为什么要用工厂模式?(优点?) 为什么不直接用new?

    (2) spring中哪里用到了工厂模式?

    (3) 除了Spring,那些场景用到了工厂模式?

    (4) 实例化对象的方式?

    希望本文章对您有帮助,您的转发、点赞是我的创作动力,十分感谢。更多好文推荐,请关注我的微信公众号--JustJavaIt
  • 相关阅读:
    Java中常用的四种线程池
    Java中线程与堆栈的关系
    Java线程池构造参数详解
    Java中三目运算符不为人知的坑
    Java并发编程实战 之 对象的共享
    Java并发编程实战 之 线程安全性
    【图文教程】Eclipse for PHP+XAMPP调试配置
    Spket在Eclipse下的安装和配置(图文教程)
    JavaScript编码规范
    FizzBuzzWhizz游戏的高效解法
  • 原文地址:https://www.cnblogs.com/liaowenhui/p/12661632.html
Copyright © 2011-2022 走看看