2016-7-5 Design Patterns : Simple Factory

问题:

interface Api{
    void test(String string);
}

class Impl implements Api{
    public void test(String string) {
        System.out.println("impl " + string);
    }
}

public class Problem {
    public static void main(String[] args) {
        Api api = new Impl();
        api.test("test");
    }
}

问题:

1.接口未被隔离

2.暴露了Impl类及其实现的细节

----------------------------------------------------

解决:

interface Api{
    void test(String string);
}

class Impl implements Api{
    public void test(String string) {
        System.out.println("impl " + string);
    }
}

class Factory{
    public static Api createApi() {
        return new Impl();
    }
}

public class Resolve {
    public static void main(String[] args) {
        
        Api api = Factory.createApi();
        api.test("test");
    }
}

升级简单工厂:

选择合适的实现类(可改造成动态的生成,实参来至于数据库或配置文件...)

class Factory{
    
    public static Api createApi(int type) {
        Api api = null;
        if (type == 1) {
            api = new Impl1();
        }else if (type == 2) {
            api = new Impl2();
        }
        return api;
    }
}

参考文献:

TP312 ISBN 978-7-302-23923-9 <<研磨设计模式>>  陈臣 王斌  清华大学出版社,2011.1

原文地址:https://www.cnblogs.com/juzi-123/p/5643556.html