zoukankan      html  css  js  c++  java
  • 模板方法模式(Template Pattern)行为型(Behavior)很常用的一个设计模式

    之前看Spring源码,里面的AbstractXmlApplicationContext,就是使用的模板方法模式,所以在这里,打算,写个简单的demo出来玩玩

    定义:在抽象类里面公开定义它的抽象模板,在子类去实现它的抽象方法,然后业务按照模板去执行。

    代码实现:

    public class TemplateMethodPraticeDay6 {
    
        /**
         * 抽象类,在里面公开定义业务模板。
         */
        public static abstract class AbstractXmlFactory{
    
            public int loadBeanDefinitions(){
                String resources = getConfigResources();
                System.out.println("加载resources文件:"+resources);
                return 0;
            }
    
            public AbstractXmlFactory() {
            }
    
            public AbstractXmlFactory(AbstractXmlFactory abstractXmlFactory) {
                this();
                System.out.println("set parent的factory");
            }
    
            /**
             * 给子类去实现
             * @return
             */
            protected abstract String getConfigResources();
        }
    
        /**
         * 实现类,在里面实现getConfigResources()方法
         */
        public static class ClassPathXmlApplicationContext extends AbstractXmlFactory{
    
            private String[] resources;
    
            public ClassPathXmlApplicationContext() {
            }
    
            public ClassPathXmlApplicationContext(String[] resources) {
                this(resources,true,null);
            }
    
            public ClassPathXmlApplicationContext(String[] resources, boolean refresh, @Nullable ClassPathXmlApplicationContext context) {
                super(context);
                this.resources = resources;
                if (refresh){
                    System.out.println("销毁已存在的BeanFactory,创建新的BeanFactory");
                }
            }
    
            @Override
            protected String getConfigResources() {
                return Arrays.toString(resources);
            }
        }
    
        public static void main(String[] args) {
            AbstractXmlFactory context = new ClassPathXmlApplicationContext(new String[]{"beanDefinition.xml"});
            context.loadBeanDefinitions();
        }
    }
  • 相关阅读:
    JavaScript之arguments对象讲解
    JavaScript之工厂方式 构造函数方式 原型方式讲解
    JavaScript之常用方法讲解
    JavaScript之引用类型讲解
    JavaScript之数据类型讲解
    JavaScript之Cookie讲解
    __cdecl __stdcall __fastcall之函数调用约定讲解
    xp/2003开关3389指令
    php源码安装常用配置参数和说明
    用yum查询想安装的软件
  • 原文地址:https://www.cnblogs.com/fuckingPangzi/p/15740260.html
Copyright © 2011-2022 走看看