美文网首页
创建和销毁对象 2018-09-30

创建和销毁对象 2018-09-30

作者: 冻死的毛毛虫 | 来源:发表于2018-10-04 22:05 被阅读0次

使用静态工厂方法代替构造器

  1. 静态工厂方法有名字,客户端代码更易于阅读
  2. 不必每次调用都创建新的对象
  3. 可以返回原返回类型的任意子类类型
  4. 创建参数化实例的时候,可以使代码更加简洁

多个构造器参数使用构造器

public class BuilderPattern {
    private final int servingSize;
    private final int savings;
    private final int calories;
    private final int fat;
    private final int sodium;
    private final int carbohydrate;

    public static class Builder{
        // Required parameters
        private final int servingSize;
        private final int servings;

        // Optional parameters
        private int calories;
        private int fat;
        private int sodium;
        private int carbohydrate;

        public Builder(int servingSize,int servings){
            this.servingSize =servingSize;
            this.servings = servings;
        }

        public Builder calories(int val){
            this.calories = val;
            return this;
        }
        public Builder fat(int val){
            this.fat = val;
            return this;
        }
        public Builder sodium(int val){
            this.sodium = val;
            return this;
        }
        public Builder carbohydrate(int val){
            this.carbohydrate = val;
            return this;
        }

        public BuilderPattern build(){
            return new BuilderPattern(this);
        }
    }

    private BuilderPattern(Builder builder){
        this.calories = builder.calories;
        this.carbohydrate = builder.carbohydrate;
        this.fat = builder.fat;
        this.savings = builder.servings;
        this.servingSize = builder.servingSize;
        this.sodium = builder.sodium;
    }

    @Override
    public String toString() {
        return "BuilderPattern{" +
                "servingSize=" + servingSize +
                ", savings=" + savings +
                ", calories=" + calories +
                ", fat=" + fat +
                ", sodium=" + sodium +
                ", carbohydrate=" + carbohydrate +
                '}';
    }
}

私有构造器或枚举类型强化Singleton属性

通过私有构造器强化不可实例化的能力

public class UtilityClass{
    private UtilityClass(){
       throw new AssertionError();
    }
}

避免创建不必要的对象

优先使用基本类型而不是封装类型

消除过期的对象

内存泄漏问题

避免使用终结方法

相关文章

  • EffectJava翻译系列(第一章:创建和销毁对象)

    1.创建和销毁对象 这个章节包含创建和销毁对象,什么时候和怎样创建,什么时候避免创建,如何确保对象在准确的时机销毁...

  • Effective Java Note (对象的创建和销毁)

    Effective Java Note (对象的创建和销毁) 一、对象的创建和销毁 1. 考虑使用静态工厂方法替代...

  • 创建和销毁对象 2018-09-30

    使用静态工厂方法代替构造器 静态工厂方法有名字,客户端代码更易于阅读不必每次调用都创建新的对象可以返回原返回类型的...

  • 优雅地创建和销毁对象

    创建和销毁对象概述 何时以及如何创建对象 何时以及如何避免创建对象 如何确保对象适时地销毁 如何管理对象销毁之前必...

  • 创建和销毁对象

    1、何时以及如何创建对象? 2、何时以及如何避免创建对象? 3、如何确保它们能够适时地销毁,以及如何管理对象销毁之...

  • 创建和销毁对象

    避免创建不必要的对象 重用不可变对象和已经的不会被修改的对象 考虑下面的语句String s=new String...

  • 创建和销毁对象

    考虑用静态工厂方法代替构造函数 静态工厂方法只是一个简单的静态方法,它返回的是类的一个实例 三个优点 静态工厂方法...

  • 创建和销毁对象

    学习目的: 何时以及如何创建对象 何时以及如何避免创建对象 如何确保对象适时销毁 如何管理对象销毁前必须进行的各种...

  • 创建和销毁对象

    相比于构造函数,考虑使用静态工厂方法 如果自己写的类,希望客户端能创建它的实例,一般自己要提供哪些方式? 提供公有...

  • 创建和销毁对象

    什么是静态工厂方法 返回一个类的实例的静态方法 优势 不要用多态的方法创建构造器,可以选择不同命名的静态工厂方法来...

网友评论

      本文标题:创建和销毁对象 2018-09-30

      本文链接:https://www.haomeiwen.com/subject/urqbnftx.html