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 ...
随机推荐
- MyBatis insert/delete/update 的返回值
insert,返回值是:新插入行的主键(primary key):需要包含<selectKey>语句,才会返回主键,否则返回值为null. <insert id="inse ...
- Android Studio编译卡死
首先,用AS,你必须fanqiang,其它都是次要的. AS/bin/*.exe.vmoptions ## *DO NOT* modify this file directly. If there i ...
- SQL 获取表结构
select [表名]=c.Name, [表说明]=isnull(f.[value],''), [列序号]=a.Column_id, [列名]=a.Name, [列说明]=isnull(e.[valu ...
- Adams 2013自定义插件方法zz
1.Adams插件介绍 Adams的高级模块(如Controls控制模块.Vibration振动模块.Durability耐久性模块等)是以插件的形式集成在Adams软件中.通过Adams提供的插件管 ...
- 展开被 SpringBoot 玩的日子 《 一 》入门篇
SpringBoot 已经是久闻大名了,因各种原因导致迟迟未展开学习SpringBoot,今天,我将会逐渐展开被SpringBoot 玩的历程,有兴趣的,可以跟我一起来~~~~~~~ 什么是sprin ...
- 20162329张旭升 2018-2019-2《网络对抗技术》第1周 Kali的安装
目录 Kali的安装 设置与主机的文件交互 Kali的安装 1.创建虚拟机 2.选择安装语言 3.设置网络 4.设置分区 5.安装完成 设置与主机的文件交互 首先在vmware workstation ...
- java中的反射整理
1,什么是反射 反射机制是java语言提供的一种基础功能,它能够赋予成语在运行时进行自省的能力.通过反射我们可以直接操作类或者对象,例如:可以通过反射去获取某个对象的类的定义,属性,方法,还可以修改类 ...
- 06flask_migrate
1,flask-migrate介绍: 因为采用db.create_all()在后期修改字段的时候不会自动的映射到数据库中,必须删去表,然后运行 db.create_all()才会重新映射,这样不符合我 ...
- Python网络编程基础pdf
Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...
- Python爬虫开发与项目实战
Python爬虫开发与项目实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1MFexF6S4No_FtC5U2GCKqQ 提取码:gtz1 复制这段内容后打开百度 ...