设计模式

设计原则

  • 封装变化:将可能发生变化的部分独立出来
  • 多用组合,少用继承
  • 针对接口编程,而不针对实现编程
  • 松耦合设计
  • 开放-关闭原则:对扩展开发,对修改关闭

设计模式

策略模式

定义一组可以互相替代的算法组,利用多态将具体实现隐藏

观察者模式

定义

观察者模式定义了对象之间的一对多依赖,当对象状态改变时,它的所有依赖者都会收到通知并自动更新。

实现方式

观察者模式在Java里有两种实现方式:Java内置观察者模式、自定义观察者模式
Java内置的观察者模式用到了Observer接口和Observable,由于Observable是类,限制了复用。

自定义观察者模式:
Observable接口应该具备的方法:addObserver, removeObserver, notifyObservers;属性:List
Observer接口应该具备的方法:update

装饰者模式

定义

动态的将行为附加到对象上,对对象功能进行扩展

设计思路

装饰者需要与被装饰者有相同的类型,并且被装饰者以组合的方式嵌入到装饰者中,然后在实现的方法中调用被装饰者的方法,达到扩展功能的目的。
相同的类型?

结构型模式

适配器模式

定义

将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)
适配器模式可以将一个类的接口和另一个类的接口匹配起来,而无须修改原来的适配者接口和抽象目标类接口

类适配器和对象适配器

类适配器通过继承实现
对象适配器通过通过关联(组合)实现

结构图

类适配器:
lei
对象适配器:
img

target:客户端所需的接口抽象
adapter:上述接口抽象的实现类,转换器
adaptee:被适配的角色,已存在的接口或实现

class Adapter extends Target {
	private Adaptee adaptee; //维持一个对适配者对象的引用
	
	public Adapter(Adaptee adaptee) {
		this.adaptee=adaptee;
	}
	
	public void request() {
		adaptee.specificRequest(); //转发调用
	}
}

开源框架

spring TaskExecutor
再如,如何用两个栈实现队列?adapter:队列,adaptee:栈

posted @ 2019-08-24 16:35  darknessplus  阅读(156)  评论(0编辑  收藏  举报