码迷,mamicode.com
首页 > 其他好文 > 详细

盖个楼还要有图纸,你怎么可以不懂设计模式(一)

时间:2020-10-12 20:04:32      阅读:17      评论:0      收藏:0      [点我收藏+]

标签:abs   abstract   一个   场景   观察   开闭原则   bsp   客户端   应用   

模板方法模式&观察者模式&责任链模式

模板方法模式

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

 

 1 public class TemplateMethodTest {    
 2     public static void main(String[] args) {
 3         AbstractClass abstractClass=new SubClass1();
 4     }
 5 }
 6 
 7 abstract class AbstractClass{
 8     public void operation(){
 9         // open
10         System.out.println(" pre ... ");
11 
12         System.out.println(" step1 ");
13 
14         System.out.println(" step2 ");
15 
16         templateMethod();
17     }
18 
19     abstract protected void templateMethod();
20 }
21 
22 class SubClass extends AbstractClass{
23      @Override
24     protected void templateMethod() {
25         System.out.println("SubClass executed . ");
26     }
27 }
28 
29 class SubClass1 extends AbstractClass{
30      @Override
31     protected void templateMethod() {
32         System.out.println("SubClass1 executed . ");
33     }
34 }
应用场景
1.当你想让客户端只扩展算法的特定步骤,而不是整个算法或其结构时,请使用Template Method模式。
2.当你有几个类包含几乎相同的算法,但有一些细微的差异时,请使用此模式。
优点:
1.你可以让客户端只覆盖大型算法的某些部分,从而减少算法其他部分发生的更改对它们的影响。
2.你可以将重复的代码拖放到超类中。
Servlet Api & Spring 中的应用:
 1 org.springframework.web.servlet.mvc.AbstractController
2 javax.servlet.http.HttpServlet 
 

观察者模式

Observer
模式定义:
定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者都会收到通知并更新
技术图片

 

应用场景:
当更改一个对象的状态可能需要更改其他对象,并且实际的对象集事先未知或动态更改时,请使用观察者模式。
优点:
1.符合开闭原则
2.可以在运行时建立对象之间的关系
 
JDK&Spring源码中的应用
 1 JDK:
2 java.util.Observable
3 Spring:
4 org.springframework.context.ApplicationListener 
 

如果不知在生产环境如何让使用,看这个?

全面解析Java8观察者模式

 

责任链模式

Chain Of Responsibility
模式定义:
为请求创建了一个接收者对象的链。
技术图片

 

应用场景:
一个请求的处理需要多个对象当中的一个或几个协作处理。
优点:
1.请求的发送者和接受者解耦
2.可以控制执行顺序
3.符合开闭原则和单一职责原则
 
经典案例
 1 javax.servlet.Filter
2 javax.servlet.FilterChain 
 
代码示例看这个

Java中的责任链设计模式,太牛了!

转载链接:https://mp.weixin.qq.com/s/jD6h2UYm1KStma-RuvyAHA

责任链进阶,看这个

Java设计模式综合运用(责任链模式进阶)

转载链接:https://mp.weixin.qq.com/s/RVVFsYNeK_pDQPqaJXFukw

盖个楼还要有图纸,你怎么可以不懂设计模式(一)

标签:abs   abstract   一个   场景   观察   开闭原则   bsp   客户端   应用   

原文地址:https://www.cnblogs.com/powerZhangFly/p/13800875.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!