Spring 中用到的设计模式

下面举例介绍 Spring 中用到的设计模式:

1. 模板设计模式

模板设计模式是一个模板方法规定了算法骨架,包括步骤一、步骤二、步骤三等,在子类中可以修改这些步骤方法。其中抽象方法叫钩子方法。
如:一个人的人生包括生活、工作,但是每个人的生活方式、工作是不同的,可以使用模板模式。

abstract class People {
    void lifetime() {
        life();
        work();
    }

    abstract void work();

    abstract void life();
}

class APerson extends People {

    @Override
    void work() {
        System.out.println("认真负责任工作");
    }

    @Override
    void life() {
        System.out.println("健康快乐生活");
    }
}

class BPerson extends People {

    @Override
    void work() {
        System.out.println("摸鱼");
    }

    @Override
    void life() {
        System.out.println("随意放浪");
    }
}

public class Main {
    public static void main(String[] args) {
        APerson aPerson = new APerson();
        aPerson.lifetime();

        BPerson bPerson = new BPerson();
        bPerson.lifetime();
    }
}

Spring 中使用模板模式的地方有:

public class AbstractApplicationContext{
	protected ConfigurableListableBeanFactory obtainFreshBeanFactory() {
		// 初始化 BeanFactory
		refreshBeanFactory();
		// 返回 BeanFactory
		return getBeanFactory();
	}
	protected abstract void refreshBeanFactory() throws BeansException, IllegalStateException;
}

class AbstractRefreshableApplicationContext extends AbstractApplicationContext {
	protected final void refreshBeanFactory() throws BeansException {
		if (hasBeanFactory()) {
			destroyBeans();
			closeBeanFactory();
		}
		try {
			DefaultListableBeanFactory beanFactory = createBeanFactory();
			beanFactory.setSerializationId(getId());
			customizeBeanFactory(beanFactory);
			loadBeanDefinitions(beanFactory);
			this.beanFactory = beanFactory;
		}
		catch (IOException ex) {
			throw new ApplicationContextException("I/O error parsing bean definition source for " + getDisplayName(), ex);
		}
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值