spring 设计模式

    Spring⽤到了哪些设计模式(总共23中,这里介绍常用的几种)


    1、工厂模式(创建bean对象的)
         beanFactory.getBean
         applicationContext.getBean
         
    2、单例模式
    ioc容器里面的bean 默认就是单例的,((只有一个bean)避免频繁的创建销毁对象,所有采用单例模式)
        
    3、aop代理模式
    给指定的目标对象提供了一种通过代理对象访问的方式。(当一个类A不能直接或者不能访问某个类C的情况下,可以找个一个代理类B去访问)
    

    4、模板模式
    定义一个操作的算法骨架,而将-些步骤延迟到子类中。Template Method 使得子类可以不改变-个算法的结构即可重定义该算法的某些特定步骤

     
    5、策略模式
    定义了算法族,分别封装起来,让它们之间可以互相替换,此模式的变化独立于算法的使用者

     
    
    6、观察者模式
    定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象, 当主题对象发生变化时,它的所有依赖者都会收到通知并更新
    发布者订阅发布事件
    监听者订阅监听事件
     

1、首先,我们需要定义一个事件,来实现ApplicationEvent接口,代表这是一个Application事件。
	public class MyEvent extends ApplicationEvent {
		public MyEvent(Object source) {
			super(source);
		}
	}


	2、还需要定义一个监听器,当然,在这里需要监听MyEvent事件。
	@Component
	public class MyListener implements ApplicationListener<MyEvent> {
		@Override
		public void onApplicationEvent(MyEvent event) {
			System.out.println("我订阅的事件已经到达");
		}
	}
	3、现在有了事件,也有了监听器,是不是还少了发布者,不然谁去发布事件呢?
		发布者,需要实现 ApplicationEventPublisherAware 接口,重写 publish 方法,方法的参数obj就是用来存放发布事件数据。
	setApplicationEventPublisher 是Spring内部主动调用的,可以简单的理解为初始化发布者。现在就剩最后一个角色了,监听器有了,
	发布者有了,事件也有了, 最后触发事件。
	@Component
	public class MyEventPublish implements ApplicationEventPublisherAware {

		@Resource
		private ApplicationContext applicationContext;
		
		private ApplicationEventPublisher publisher;

		@Override
		public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
			this.publisher = applicationEventPublisher;
		}

		public void publish(Object obj) {
			this.publisher.publishEvent(obj);
		}
		
		public void publish() {
			publish.publish(new MyEvent(this));
		}
		 
		
		// 触发事件
		public void test() {
			MyEvent myEvent = new MyEvent(this, "订单创建", contentList);
			applicationContext.publishEvent(myEvent);//ApplicationContext是我们的事件容器上层,我们发布事件,也可以通过此容器完成发布
			//publisher.publishEvent(myEvent);//也可以通过此容器完成发布
		} 	
			
	} 
	

    
    
    7、适配器模式
    定义:将一个类的接口转换成客户希望的另一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作

    例如:类的继承
    spring aop代理模式在增强方法过程有前置通知、后置通知、异常通知这个三个通知实际上是借助适配器模式实现的
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值