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 ...
随机推荐
- ubuntu tomcat 8.5.33 开启https
用jdk自带的个工具生成数字证书: han@ubuntu:~$ sudo $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keyst ...
- CF 552 Neko does Maths
给出两个数a,b 求k 使得 a+k b+k有最小公倍数 a,b同时加上一个非负整数k,使得,a+k,b+k的最小公倍数最小 因为最小公公倍数=x*y / gcd(x,y),所以肯定离不开最大 ...
- SDK踩坑全纪录
No1: Unity2017.1版本导出的android工程放到Android Studio上跑起来非常卡,Unity2017.3或4版本导出就没问题. 对比后发现gradle文件有差异,特此标注 1 ...
- 关于LP Wizard生成Allegro封装无焊盘的解决方案
最近在学Allegro,安装了软件后看网上说LP Wizard可以一键生成Allegro封装,就想去尝尝鲜.毕竟一直都是手动做封装,没怎么用过向导.但是按照网上教程用LP生成了一个封装,发现打开时没有 ...
- MachineLearningOnCoursera
Week Six F Score \[\begin{aligned} P &= &\dfrac{2}{\dfrac{1}{P}+\dfrac{1}{R}}\\ &= & ...
- 09-Python入门学习-函数基础与参数
一.函数基础 1.定义函数的三种形式 1.1 无参函数 def foo(): print('from foo') foo() 1.2 有参函数 def bar(x,y): print(x,y) bar ...
- JS的常用属性
JS-------定义:基于事件和对象驱动,并具有安全性能的脚本语言. 引入:<script type=”text/javascript”>具体js代码</script> ...
- Flume+Kafka+Storm整合
Flume+Kafka+Storm整合 1. 需求: 有一个客户端Client可以产生日志信息,我们需要通过Flume获取日志信息,再把该日志信息放入到Kafka的一个Topic:flume-to-k ...
- nginx配置前端代理
#user nobody;worker_processes 1; #error_log logs/error.log;#error_log logs/error.log notice;#error_l ...
- IntelliJ IDEA 2016.2 配置Tomcat 运行Web项目
1.可能会出现的问题 Run-->Edit Configurations 中点击"+"号没有tomcat server... 解决办法:File--->Setting- ...