zoukankan      html  css  js  c++  java
  • Effective Java 1:创建和销毁对象

    第一条:考虑用静态工厂方法代替构造器

      静态工厂方法与构造器不同的第一大优势是:它们有名称

      静态工厂方法与构造器不同的第二大优势是:不必在每次调用它们的时候都创建新的对象

      静态工厂方法与构造器不同的第三大优势是:它们可以返回原返回类型的任何子类型对象

        API可以返回对象,同时有不会使对象的类变成共有的,这种技术适用与基于接口的框架(interface-based framework),接口为静态工厂方法提供了自然返回类型,接口不能有静态方法

        静态工厂方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不必存在,这种灵活的静态工厂方法构成了服务提供者框架(service provide Framework)的基础,例如JDBC(java数据库链接,Java Database Connectivity)API,服务提供者框架是指:这样一个系统,多个服务提供者实现一个服务,系统为服务提供者的客户端提供多个实现,并把它们从多个实现中解耦出来

        服务提供者框架组成:(1).服务接口(service interface),这是提供者实现的,(2).提供者注册API(Provider Registration API), 这是系统用来注册实现的,让客户端访问他们。(3).服务访问API(service Access API),是客户端用来获取服务的实例的,(4).服务提供者接口(Service Provider Interface),这些提供者负责创建其服务实现的实例, 对于JDBC,connection就是服务接口,DriverManager.registerDriver是提供者注册API,DriverManager.getConnection是服务访问API,Driver就是服务提供者接口

      静态工厂方法与构造器相比第四大优势是:在创建参数化类型实例时,它们使代码变的更加简洁

        Map<String,List<String>> m=new HashMap<String,List<String>>();

      静态工厂方法的缺点:

                (1).类如果不含公有的或者受保护的构造器,就不能被子类化

                (2).它们和其他静态方法相比实际上没有任何区别

      valueof(),of,getInstance,newInstance,getType,newType,切忌第一反应是提供公有的构造器,而不是考虑静态方法  

  • 相关阅读:
    leetcode950
    leetcode938
    leetcode953
    推荐系统那点事儿
    极大似然估计的理解与应用
    吴恩达机器学习笔记 —— 1 绪论:初识机器学习
    吴恩达机器学习笔记 —— 3 线性回归回顾
    吴恩达机器学习笔记 —— 5 多变量线性回归
    吴恩达机器学习笔记 —— 7 Logistic回归
    吴恩达机器学习笔记 —— 8 正则化
  • 原文地址:https://www.cnblogs.com/csxf/p/3279529.html
Copyright © 2011-2022 走看看