《Effective Java》 第二章

《Effective Java》 第二章_第1张图片

 

https://www.cnblogs.com/rayguo/p/3771100.html

优点三:静态工厂方法可以返回原返回类型的任何子类的对象

 

**
 * Father类
 * @author xujianguo
 */
class Father {
    /**
     * 构造方法
     */
    public Father() {}
    
    /**
     * say方法
     */
    public void say() {
        System.out.println("Father say");
    }
    
    /**
     * 静态工厂方法
     * 根据index来返回对象,可以返回该类的子类的对象
     * @param index
     * @return
     */
    public static Father newInstance(int index) {
        switch(index) {
        case 1:
            return new Son1();
        case 2:
            return new Son2();
        default:
            return new Father();
        }
    } 
}

/**
 * Son1类
 * 继承Father
 * @author xujianguo
 */
class Son1 extends Father {
    public void say() {
        System.out.println("Son1 say");
    }
}

/**
 * Son2类
 * 继承Father
 * @author 
 */
class Son2 extends Father {
    public void say() {
        System.out.println("Son2 say");
    }
}

 

 

枚举使用静态工厂方法

Enum类:

《Effective Java》 第二章_第2张图片

《Effective Java》 第二章_第3张图片

 

《Effective Java》 第二章_第4张图片

《Effective Java》 第二章_第5张图片

 《Effective Java》 第二章_第6张图片

 

服务提供者框架

http://liwenshui322.iteye.com/blog/1267202

 《Effective Java》 第二章_第7张图片

从JDBC源码带你了解服务提供者框架

https://blog.csdn.net/zhangshaoqiangchn/article/details/65442234

 

 《Effective Java》 第二章_第8张图片

《Effective Java》 第二章_第9张图片

 《Effective Java》 第二章_第10张图片

 《Effective Java》 第二章_第11张图片

 

你可能感兴趣的:(datastructure)