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.可实现批量生产