常用设计模式总结

1.单例模式

  1.构造函数私有化

  2.需要单例的对象设置为静态私有属性

  3.设置一个公用方法可获取上述属性,并在方法内部判断是否需要实例化(该属性为null时,才实例化)

 

2.工厂模式

  1.继承公用接口

  2.通过工厂内方法实例化所需要的类

 

3.装饰者模式

  (继承方式,不推荐,臃肿)

  1.继承需要装饰的类

  2.重写需要装饰的方法

   (聚合方式)

  1.装饰者对象内部维护一个被装饰者对象。创建一个有参构造函数,参数为被装饰者对象

  2.装饰者对象内部创建一个装饰方法,装饰方法内部调用被维护的被装饰者对象需要装饰的方法,然后装饰者方法对其进行一个装饰。

 

4.责任链模式

  1.创建责任链的人员类,每一个类中维护一个直接后继对象

  2.为每个成员类创建处理方法(handle),参数为用户传递的问题,当该方法无法处理该问题的时候,将问题提交给其直接后继的对象handle方法处理

 

5.适配器模式

  (组合方式)

  1.适配器类实现所需要为其适配的类的接口

  2.定义一个适配方法,参数为需要适配的对象,返回值为自身

  (继承方式)

  1.适配器类继承所需要为其适配的类的基类

  2.定义一个适配方法,参数为需要适配的对象,返回值为自身

 

6.策略模式

  1.将相同模块且被反复使用的行为定义在接口当中。

  2.拥有此行为的类则实现此接口进行重写 (Override)

  (尽量加上@Override注解,帮助jdk在进行编译的时候可以为你检查出错误 )

 

7. 观察者模式

  1.创建目标对象以及目标对象的实现类

  2.目标对象定义attach(添加观察者), dettach(删除观察者) , nodify(通知) 方法, 维护一个观察者对象的集合。nodify进行遍历观察者对象,调用update方法

  3.创建观察者接口,一个或多个观察者类

  4.观察者接口顶一个update(更新) 方法

  5.观察者类实现观察者接口,并对update重写,目标对象状态更改时,update方法执行一系列动作。

  6.目标对象的状态变更时调用nodify方法。

  (推模式 和 拉模式的区分)

  推模式 是 notify方法在调用update方法的时候精确的将数据传递给观察者

  拉模式 是 notify方法在调用update方法的时候直接将对象传人,然后观察者根据需求取得所需要的数据

 

8.代理模式

  静态代理(继承方式 与 聚合方法 和装饰者模式相同)

  动态代理 (jdk自带,cglib)

  jdk自带的动态代理  

  1.代理类实现 InvocationHandler 接口, 重写invoke 方法

  2.客户端使用Proxy静态方法newProxyInstance 设置动态代理 并返回代理对象

  3.代理对象可实现被代理对象的方法 

 

9.模板方法模式

  1.定义一个抽象处理类,该类定义一个final 模板方法,此方法执行一系列动作

  2.为每一动作定义一个方法,将可重写的方法定义为抽象方法,不可重写的方法定义为final 方法

  

  

转载于:https://www.cnblogs.com/sz-zzm/p/5431054.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值