Java设计模式,行为型(一)(策略模式,命令模式)
策略模式(Strategy)
策略模式用来分离算法的实现,类比与if-else;通过上下文对实现进行管理。
约束接口:
public interface IPay {void pay(Context ctx);
}
上下文:
public class Context implements IPay {private IPay pay;protected String name;protected int price;public Context(IPay pay, String name, int price) {this.pay = pay;this.name = name;this.price = price;}public void pay() {pay(this);}@Overridepublic void pay(Context ctx) {pay.pay(ctx);}
}
实现
public class RMBPay implements IPay {@Overridepublic void pay(Context ctx) {System.out.println(ctx.name+"人民币");}
}
使用:
public class MyClass {public static void main(String[] args){IPay rmbPay=new RMBPay();Context context=new Context(rmbPay,"ss",22);context.pay();}
}
命令模式(Command)
通过将行为封装达到解耦的目的
public interface Command {void execute();
}
码农:
public class Work implements Command {@Overridepublic void execute() {System.out.println("努力工作");}
}
加班
public class Work996 implements Command {@Overridepublic void execute() {System.out.println("996工作..");}
}
主管:
public class Manage implements Command {private Command command;public Manage(Command command) {this.command = command;}@Overridepublic void execute() {command.execute();}
}
人事
public class HR implements Command{private Command command;public HR(Command command) {this.command = command;}@Overridepublic void execute() {command.execute();}
}
人事干活:
public class Retire implements Command {private Command command;@Overridepublic void execute() {System.out.println("辞退天天摸鱼的...");}
}
老板:
public class Boos {private Command command;public void setCommand(Command command) {this.command = command;}public void talk() {command.execute();}
}
老板发布命令:
public class MyClass {public static void main(String[] args) {//码农Command work = new Work();//主管Manage manage = new Manage(work);//老板Boos boos = new Boos();//老板找主管boos.setCommand(manage);//老板让干活boos.talk();//人事HR hr=new HR(new Work996());//老板找人事1boos.setCommand(new HR(new Retire()));//员工上班摸鱼boos.talk();//老板找人事2boos.setCommand(hr);//员工最近没有奋斗精神boos.talk();}}
Java设计模式,行为型(一)(策略模式,命令模式)相关推荐
- 【每天一个java设计模式(十五)】 - 命令模式
命令模式是一种数据驱动的设计模式,它属于行为型模式.请求以命令的形式包裹在对象中,并传给调用对象.调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令. 命令模式也就是一个 ...
- Java设计模式及应用场景之《命令模式》
文章目录 一.命令模式定义 二.命令模式的结构和说明 三.命令模式示例 四.命令模式扩展 -- 宏命令示例 五.命令模式扩展 -- 可撤销和恢复操作示例 1.反操作式(补偿式) 2.存储恢复式 六.命 ...
- 【每天一个java设计模式(二十三)】 - 访问者模式
在访问者模式中,我们使用了一个访问者类,它改变了元素类的执行算法.通过这种方式,元素的执行算法可以随着访问者改变而改变.这种类型的设计模式属于行为型模式.根据模式,元素对象已接受访问者对象,这样访问者 ...
- 【每天一个java设计模式(十四)】 - 解释器模式
解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式.这种模式实现了一个表达式接口,该接口解释一个特定的上下文. 解释器模式主要包括以下几个部分: 抽象表达式角色:定义解释器的接口,约定解释 ...
- 《设计模式详解》行为型模式 - 命令模式
命令模式 6.3 命令模式 6.3.1 概述 6.3.2 结构 6.3.3 案例实现 6.3.4 优缺点 6.3.5 使用场景 6.3.6 JDK 源码 - Runnable 完整的笔记目录:< ...
- 设计模式-行为型模式-命令模式
设计模式-行为型模式-命令模式 基础 以一个MIS系统为栗子 MIS 管理信息系统(Management Information System,MIS)是一个以人为主导的,利用计算机硬件.软件和网络设 ...
- 设计模式 — 行为型模式 — 命令模式
目录 文章目录 目录 命令模式 应用场景 代码示例 命令模式 命令模式的目的是解耦调用操作的对象(调用者)和提供实现的对象(接收者). 命令模式的思路是在调用者和接收者之间插入一个命令类(Comman ...
- Java设计模式之结构型:享元模式
一.什么是享元模式: 享元模式通过共享技术有效地支持细粒度.状态变化小的对象复用,当系统中存在有多个相同的对象,那么只共享一份,不必每个都去实例化一个对象,极大地减少系统中对象的数量.比如说一个文本系 ...
- Java设计模式之结构型:装饰器模式
一.什么是装饰器模式: 当需要对类的功能进行拓展时,一般可以使用继承,但如果需要拓展的功能种类很繁多,那势必会生成很多子类,增加系统的复杂性,并且使用继承实现功能拓展时,我们必须能够预见这些拓展功能, ...
- Java设计模式(7)装饰模式(Decorator模式)
Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee.这 ...
最新文章
- 那些年,我们见过的 Java 服务端乱象
- 工行服务器维护时间,工行服务器安全链接
- liferay requestrequest和actionRequest用法
- 一张图看程序媛阿源的2021个人年度流水账
- go实现本地文件搜索引擎
- 分布式链路追踪(Sleuth、Zipkin)
- 按键精灵定位坐标循环_[按键精灵手机版教程]DNF遍历背包卖物
- SciPy 安装不上?
- make 及 make clean 的作用
- 计算机技术在生物学中的应用鲁东大学,生物科学与技术学院
- woocommerce 下单失败也会清空购物车
- Java数据结构与算法(二)
- Lect1 String相关题目
- 微软学生中心DreamSpark
- 新型4-(3H)-喹唑啉酮类作为VEGFR-2抑制剂对肝癌细胞具有潜在活性
- 红帽 linux 安装gns3,GNS3 on Centos / Redhat / Fedora源码安装
- web前端css伪元素使用阿里iconfont中Unicode编码
- 书到用时方恨少,收集并不断积累资源【不断更新】
- 如何向MongoDB数据库导入数据
- 计算机检索功能如何操作,请问如何设置电脑搜索
热门文章
- Windows xp 定时关机
- mysql 递减查询_Sql实现递减查询
- 计算机2级可以搞小抄吗,计算机二级excel公式总结小抄
- 送给女朋友的小礼物(程序员)
- Unity的Realtime GI, Probe Volumes, LOD Groups
- 【胡学长 带你学 Global Mapper 】谷歌历史影像下载方法
- Aigtek线束测试仪,ATX-3000台式线束测试仪
- Omni(USDT)钱包安装(ubuntu)
- 主板点不亮 复位BIOS_小白莫慌,一文带你玩转主板BIOS!(上)
- 微信公众平台开发教程(一)