zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Python常用模块学习
    如何在cmd下切换不同版本的Python
    Python3
    Python第二模块(文件和函数)
    Hibernate教程一览
    struts2框架一览
    Java正式day_04——嵌套循环
    AJAX
    JS+JQUERY
    Mybatis注意问题
  • 原文地址:https://www.cnblogs.com/juzi-123/p/5643556.html
Copyright © 2011-2022 走看看