Spring设计模式_策略模式/其他
策略模式特性
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.可实现批量生产
Spring设计模式_策略模式/其他的更多相关文章
- 设计模式_策略模式_在Spring中的应用
一.理论 在spring中经常有读取配置文件的需求,这里就会用到一个Spring提供的Resource接口 Resource 接口是具体资源访问策略的抽象,也是所有资源访问类所实现的接口.Resour ...
- spring设计模式_代理模式
代理模式应该是Spring核心设计模式之一了 先说下代理模式特性: 1.有代理人和被代理人 2.对于被代理的人来说,这件事情是一定要做的,但是我又不想做,所有就找代理人来做. 3.需要获取到被代理人的 ...
- java_设计模式_策略模式_Strategy pattern(2016-07-15)
感受:将算法从方法级别,提升到类级别.之后利用java多态,来切换不同的算法实现不同的功能. 在阎宏博士的<JAVA与模式>一书中开头是这样描述策略(Strategy)模式的: 策略模式属 ...
- Spring设计模式_工厂模式
先说下工厂模式的特性 1.对于调用者来说,影藏了复杂的逻辑处理过程,调用者只关心执行结果. 2.工厂要对结果负责,保证生产出符合规范的产品. Git代码地址 https://github.com/w ...
- 【GOF23设计模式】策略模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_策略模式.CRM中报价策略.GUI编程中布局管理器底层架构 package com.test.strategy; /** ...
- JavaScript设计模式之策略模式(学习笔记)
在网上搜索“为什么MVC不是一种设计模式呢?”其中有解答:MVC其实是三个经典设计模式的演变:观察者模式(Observer).策略模式(Strategy).组合模式(Composite).所以我今天选 ...
- 设计模式:策略模式(Strategy)
定 义:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化, 不会影响到使用算法的客户. 示例:商场收银系统,实现正常收费.满300返100.打8折.......等不同收费 ...
- PHP设计模式之策略模式
前提: 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能.如查 找.排序等,一种常用的方法是硬编码(Hard Cod ...
- 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)
原文:乐在其中设计模式(C#) - 策略模式(Strategy Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 策略模式(Strategy Pattern) 作者:webabc ...
随机推荐
- C++11 带来的新特性 (4)—— 匿名函数(Lambdas)
1 语法 Lambdas并不是新概念,在其它语言中已经烂大街了.直接进入主题,先看语法: [ captures ] ( params ) specifiers exception attr -> ...
- CentOs下手动升级node版本
查找对应的nodejs包,具体参考https://nodejs.org/download/release/ 切换到安装node的位置 此处为/usr/local/lib/nodejs 不存在可以建立 ...
- angularjs和ajax的结合使用 (三)
转眼九月份了,忙忙碌碌 发现今年还没开过张,写一篇吧. 15年在空闲时就倒腾过angularjs那玩意儿 ,觉得还是挺好的,李金龙那厚厚的一本书,只不过没有系统化应用.最主要的是原来有一个东西没有用到 ...
- 计蒜客 买书 dfs
题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...
- python 日常错误整理
1.NameError: name 'raw_input' is not defined 问题原因:python 3 中raw_input已经被input 替代
- [R]R包版本更迭【持续更新】
由于R版本更迭,网上或旧的教材上的包可能没有在维护,或者被其他包替代. 做一个表记录碰到的一些替代方案.个人向,非完整指南. * mvpart 2014年之后不再更新,R 3.0版本后无法安装, 提示 ...
- 多项式与三角函数求导——BUAA OO 第一单元作业总结
第一次作业 需求简要说明 针对符合规定的多项式表达式输出其符合格式规定的导函数多项式,格式错误输出WRONG FORMAT! 带符号整数 支持前导0的带符号整数,符号可省略,如: +02.-16> ...
- IntelliJ IDEA最新破解版2018.3.1(附2018.2.2 完美破解教程)
2018.3.1最新版破解 1.官网下载IDEA 2018.3.1的商业版本点我去下载 2.破解jar下载:JetbrainsIdesCrack-3.4-release-enc.jar点我去下载 3. ...
- 【转】 微软在.NET官网上线.NET 架构指南
原文地址:http://www.cnblogs.com/shanyou/p/6676357.html. 微软在Visual Studio 2017 正式发布的时候也上线了一个参考应用https://g ...
- 201771010126 王燕《面向对象程序设计(Java)》第十周学习总结
实验十 泛型程序设计技术 实验时间 2018-11-1 1.实验目的与要求 (1) 理解泛型概念: 泛型:也称参数化类型(parameterized type),就是在定义类.接口和方法时,通过类型 ...