用静态工厂方法来代替构造器为外界提供对象

描述:

  • 静态工厂方法代替构造器来给外界提供对象,创建对象依然是由构造器来完成的
  • 创建对象和提供对象:
    • 创建对象的方式:

      • 构造器
    • 提供对象来哦方式:
      • 构造器
      • 类中公有的静态方法
  • 一般在使用静态工厂方法时,会根据方法的需要提供private的构造器
  • 静态方法=类方法
    • 因为需要类来调用,所以需要static

用途(优点):

  1. 有便于分辨的名字

    • 解释:

      • 构造器和类同名,当存在多个构造器时,用户不便分辨各个构造器的作用
      • 静态工厂方法可以根据功能自定义方法名
    • tips:
      • 当一个类有多个构造器时,建议使用静态工厂方法来提供对象
  2. 不用每次都创建一个对象,单例
    • 解释:

      • 可以避免多次创建对象,节省资源消耗,单例
  3. 可以return该类的任何子类
  4. 解决参数列表相同但意义不同的构造函数不能同时出现的缺陷
    • 解释:

      • Person(String job)、Person(String name)这两个构造函数是不能同时存在的
      • 静态工厂
        • public static Person PersonWithName(String name)
        • public static Person PersonWithJob(String job)
  5. 控制参数,从做填空到做选择
    • 解释:

      • Person("male")、Person("female"),调用者需要自己提供性别这两个参数
      • 静态工厂:
        • public static Person aMale(){return new Person("male")}

最新文章

  1. python3使用pyinstaller打包apscheduler出的错
  2. Dell DRAC的重启方法
  3. Configuring Network in CentOS 6.3 Virtual Box + Screenshots
  4. GridView获取CheckBox的值及所在列的ID
  5. xcode8让真机测试支持ios8.0以下版本
  6. webvnc利器-noVNC集成实战
  7. Java 中的 request 和response 理解
  8. springfox.documentation.service.ApiInfo配置示例
  9. 分巧克力【来源:CSDN线上编程挑战赛】——递归,费波那奇数列,迭代
  10. 编译QT时出现lib/libQtGui.so: undefined reference to `ts_read_raw'的解决办法
  11. Bzoj 1674: [Usaco2005]Part Acquisition dijkstra,堆
  12. BZOJ 1096 ZJOI2007 仓库建设 边坡优化
  13. Beta 第七天
  14. pyspider 初次使用
  15. 【webpack系列】从零搭建 webpack4+react 脚手架(二)
  16. 1-TwoSum(简单)
  17. U-Boot Makefile分析(3) rules.mk分析
  18. PAT B1034 有理数四则运算 (20 分)
  19. password学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
  20. Java -- Java 类集 -- 目录

热门文章

  1. 如何获取Apollo上项目下的所有namespace?
  2. 使用三台云服务器搭建真正的Redis集群
  3. .Net Core踩坑记:读取txt中文乱码
  4. 有趣的条漫版 HashMap,25岁大爷都能看懂
  5. 提交代码到gitbub.com
  6. js清除所有的空格
  7. Perl入门(三)Perl的数组
  8. 在maven项目中使用Junit进行单元测试(一)
  9. windows操作系统查看端口,关闭端口进程
  10. SpringBoot--swagger搭建、配置及使用