Spring设计模式_策略模式/其他


策略模式特性

  1.执行最终结果一样

  2.执行过程和执行逻辑不一样

  3.使用同一接口  

达到目的就可以了

Git地址 

https://github.com/wujiachengSH/WjcStrategy

策略模式比较简单,直接看代码

1.首先来个接口

1 package com.wjc.Strategy;
2 
3 import java.util.Date;
4 
5 public interface DateUtil {
6 
7     String getDate(Date date);
8     
9 }

2.随便来2个实现类

 1 package com.wjc.Strategy;
 2 
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5 
 6 public class YMDUtil implements DateUtil {
 7 
 8     @Override
 9     public String getDate(Date date) {
10         SimpleDateFormat sdfd =new SimpleDateFormat("yyy-MM-dd");
11         return sdfd.format(date);
12     }
13 
14 }
 1 package com.wjc.Strategy;
 2 
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5 
 6 public class YMUtil implements DateUtil {
 7 
 8     @Override
 9     public String getDate(Date date) {
10         SimpleDateFormat sdfd =new SimpleDateFormat("yyy-MM");
11         return sdfd.format(date);
12     }
13 
14     
15 }

3.来个封装

 1 package com.wjc.Strategy;
 2 
 3 import java.util.Date;
 4 
 5 public class DateChange {
 6 
 7     private DateUtil dateUtil;
 8     
 9     public DateChange(DateUtil dateUtil) {
10         this.dateUtil = dateUtil;
11     }
12     
13     public String getDate(Date date) {
14         return dateUtil.getDate(date);
15     }
16     
17 }

4.测试一下

 1 package com.wjc.Strategy;
 2 
 3 import java.util.Date;
 4 
 5 public class Test {
 6 
 7     public static void main(String[] args) {
 8         
 9         Date date = new Date();
10         date.getTime();
11         
12         DateChange dateChange = new DateChange(new YMDUtil());
13         System.out.println("YMD : " + dateChange.getDate(date));
14         
15         DateChange dateChange2 = new DateChange(new YMUtil());
16         System.out.println("YM : " + dateChange2.getDate(date));
17     }
18     
19 }

Spring里只要的还有单例,委派,原型和模版模式,鉴于 发现菜鸟教程中相关说明非常完善,觉得暂停设计模式章节,开始源码分析

http://www.runoob.com/design-pattern/template-pattern.html  菜鸟地址,唉,大佬就是大佬,总结的比我好,比我完善的多

单例模式特性

  1.保证系统从启动到终止,只会产生一个实例

  2.当我们在应用中遇到功能性冲突的时候,需要使用单例模式

委派模式

  1.两个参与角色:委托人和被委托人

  2.委托人和被委托人在权利上是完全平等的(同一接口)

  3.委托人持有被委托人的引用

  4.不关心过程,只关心结果

  干活是你的(普通员工),功劳是我的(项目经理)

原型模式

  1.首先有一个原型

  2.数据内容相同,但对象实例不同(完全不同的内存地址)

模版模式

  1.执行流程固定,但中间步骤有细微差别

  2.可实现批量生产

原文地址:https://www.cnblogs.com/wujc/p/10590065.html