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