策略模式特性
1.执行最终结果一样
2.执行过程和执行逻辑不一样
3.使用同一接口
达到目的就可以了
Git地址
https://github.com/wujiachengSH/WjcStrategy
策略模式比较简单,直接看代码
1.首先来个接口
package com.wjc.Strategy; import java.util.Date; public interface DateUtil { String getDate(Date date); }
2.随便来2个实现类
package com.wjc.Strategy; import java.text.SimpleDateFormat;
import java.util.Date; public class YMDUtil implements DateUtil { @Override
public String getDate(Date date) {
SimpleDateFormat sdfd =new SimpleDateFormat("yyy-MM-dd");
return sdfd.format(date);
} }
package com.wjc.Strategy; import java.text.SimpleDateFormat;
import java.util.Date; public class YMUtil implements DateUtil { @Override
public String getDate(Date date) {
SimpleDateFormat sdfd =new SimpleDateFormat("yyy-MM");
return sdfd.format(date);
} }
3.来个封装
package com.wjc.Strategy; import java.util.Date; public class DateChange { private DateUtil dateUtil; public DateChange(DateUtil dateUtil) {
this.dateUtil = dateUtil;
} public String getDate(Date date) {
return dateUtil.getDate(date);
} }
4.测试一下
package com.wjc.Strategy; import java.util.Date; public class Test { public static void main(String[] args) { Date date = new Date();
date.getTime(); DateChange dateChange = new DateChange(new YMDUtil());
System.out.println("YMD : " + dateChange.getDate(date)); DateChange dateChange2 = new DateChange(new YMUtil());
System.out.println("YM : " + dateChange2.getDate(date));
} }
Spring里只要的还有单例,委派,原型和模版模式,鉴于 发现菜鸟教程中相关说明非常完善,觉得暂停设计模式章节,开始源码分析
http://www.runoob.com/design-pattern/template-pattern.html 菜鸟地址,唉,大佬就是大佬,总结的比我好,比我完善的多
单例模式特性
1.保证系统从启动到终止,只会产生一个实例
2.当我们在应用中遇到功能性冲突的时候,需要使用单例模式
委派模式
1.两个参与角色:委托人和被委托人
2.委托人和被委托人在权利上是完全平等的(同一接口)
3.委托人持有被委托人的引用
4.不关心过程,只关心结果
干活是你的(普通员工),功劳是我的(项目经理)
原型模式
1.首先有一个原型
2.数据内容相同,但对象实例不同(完全不同的内存地址)
模版模式
1.执行流程固定,但中间步骤有细微差别
2.可实现批量生产