• 模板方法模式(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();
        }
    }
  • 相关阅读:
    再也不用为word 中表达式的上标和下标发愁了
    创建链接
    ps钢笔工具隐藏的知识。
    学Ps个人遇到的小细节
    新手琢磨ps,学问深着呢。。
    数据库2012终于知道数据库攻击注入参数
    想脱离鼠标,不想要鼠标就只想用键盘完成所有编程,你说可能吗?
    vs2013中的快捷键
    如何在C/C++中动态分配二维数组【转载】
    转载:C++的那些事:表达式与语句
  • 原文地址:https://www.cnblogs.com/fuckingPangzi/p/15740260.html
Copyright © 2020-2023  润新知