zoukankan      html  css  js  c++  java
  • 静态与动态工厂

    实例

    /**
     * 静态工厂
     * @date 2020.04.01
     */
    public class ExternalBeanStaticFactory {
        private static OkHttpClient OkHttpClient;
        public static OkHttpClient getInstance() {
            if (OkHttpClient == null) {
                OkHttpClient = new OkHttpClient.Builder().build();
            }
            return OkHttpClient;
        }
    }
    /**
     * 动态工厂
     * @author cxy
     * @date 2020.04.01
     */
    public class ExternalBeanFactory {
        private OkHttpClient OkHttpClient;
        public OkHttpClient getInstance() {
            if (OkHttpClient == null) {
                OkHttpClient = new OkHttpClient.Builder().build();
            }
            return OkHttpClient;
        }
    }
    <!-- 静态工厂 -->
    <bean class="net.web.ExternalBeanStaticFactory" factory-method="getInstance" id="okHttpClientStatic"></bean>
    
    <!-- 动态工厂 -->
    <bean class="net.web.ExternalBeanFactory" id="ExternalBeanFactory"/>
    <bean class="okhttp3.OkHttpClient" factory-bean="ExternalBeanFactory" factory-method="getInstance" id="okHttpClient"></bean>

    可以看到,静态工厂的方法多了 static 关键字,而动态工厂就对了个bean 配置,看到这里我们来总结一下:

    • 逻辑代码和配置方式的区别(这也是CSDN看到最多的关于这两者的解释)
    • 动态工厂需要更多的内存(达到一定的并发)
  • 相关阅读:
    原型模式
    Object.defineProperties()和Object.defineProperty()方法
    访问器属性:setter()函数和getter()函数
    2019.7.11刷题统计
    2019.7.10刷题统计
    2019.7.9刷题统计
    2019.7.8刷题统计
    2019.7.7刷题统计
    2019.7.6刷题统计
    2019.7.5刷题统计
  • 原文地址:https://www.cnblogs.com/QianYue111/p/13607790.html
Copyright © 2011-2022 走看看