设计模式系列 - 命令模式
程序员文章站
2022-09-04 18:01:35
命令模式是一种数据驱动型的设计模式,它以命令的形式包裹在对象中,并传递给调用者。 介绍 命令模式属于行为型设计模式,它通过将一个请求封装成一个对象,从而使我们可以用不同的请求对客户端进行参数化。 类图描述 代码实现 1、创建命令接口 2、创建一个模拟请求类 3、创建命令接口的实现类 4、创建命令调用 ......
命令模式是一种数据驱动型的设计模式,它以命令的形式包裹在对象中,并传递给调用者。
介绍
命令模式属于行为型设计模式,它通过将一个请求封装成一个对象,从而使我们可以用不同的请求对客户端进行参数化。
类图描述
代码实现
1、创建命令接口
public interface iorder { void execute(); }
2、创建一个模拟请求类
public class stock { private string name = "abc"; private int quantity = 10; public void buy() { console.writeline($"stock [name:{name} quantity:{quantity}] bought"); } public void sell() { console.writeline($"stock [name:{name} quantity:{quantity}] sold"); } }
3、创建命令接口的实现类
public class buystock:iorder { private stock abcstock; public buystock(stock abcstock) { this.abcstock = abcstock; } public void execute() { this.abcstock.buy(); } } public class sellstock:iorder { private stock abcstock; public sellstock(stock abcstock) { this.abcstock = abcstock; } public void execute() { abcstock.sell(); } }
4、创建命令调用类
public class broker { private list<iorder> orderlist = new list<iorder>(); public void takeorder(iorder order) { orderlist.add(order); } public void placeorders() { foreach (var order in orderlist) { order.execute(); } orderlist.clear(); } }
5、上层调用
class program { static void main(string[] args) { var abcstock = new stock(); var buystockorder = new buystock(abcstock); var sellstock = new sellstock(abcstock); var broker = new broker(); broker.takeorder(buystockorder); broker.takeorder(sellstock); broker.placeorders(); console.readkey(); } }
总结
命令模式通过将实体和行为进行分离,使得对行为的操作不依赖于实体,双方解耦,降低了系统耦合度。
上一篇: 在ASP网站设计中表单验证
下一篇: SQL游标的概念及作用分析