工厂模式

工厂模式是对象的创建模式,工厂负责实例化对象,做到对象的使用和创建分离,职责分明,便于维护和扩展。

1.简单工厂模式,又叫静态工厂模式。
java.lang.Integer#valueOf(String) (Boolean, Byte, Character,Short, Long, Float 和 Double与之类似)

public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
}

 可以把Integer看成工厂类,valueOf实例化一个Integer对象。

2.抽象工厂模式,对工厂进一步抽象。当需要扩展新的类,不用修改原代码,增加具体工厂继承抽象工厂即可。

  Object类相当于抽象工厂:

   public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
Double类相当于具体工厂,重写toString方法创建String对象:

    public String toString() {
        return toString(value);
    }

    public static String toString(double d) {
        return FloatingDecimal.toJavaFormatString(d);
    }
 Integer类相当于具体工厂,重写toString方法创建String对象:
    public String toString() {
        return toString(value);
    }
   public static String toString(int i) {
        if (i == Integer.MIN_VALUE)
            return "-2147483648";
        int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
        char[] buf = new char[size];
        getChars(i, size, buf);
        return new String(buf, true);
    }
posted @ 2018-10-19 17:40  刘勇1993  阅读(135)  评论(0编辑  收藏  举报