场景
使用原型模式获取命令对象
实现代码
命令对象
1 | namespace DesignPatterns.Prototype |
原型对象
1 | namespace DesignPatterns.Prototype |
相关调用
1 | Prototype.Command command = new Prototype.Command(); |
使用原型模式获取命令对象
1 | namespace DesignPatterns.Prototype |
1 | namespace DesignPatterns.Prototype |
1 | Prototype.Command command = new Prototype.Command(); |
每种仪表都实现了统一的接口,设计一个工厂,生产不同的仪表
1 | namespace DesignPatterns.SimpleFactory |
1 | using System; |
1 | using System; |
1 | namespace DesignPatterns.SimpleFactory |
1 | namespace DesignPatterns.SimpleFactory |
1 | namespace DesignPatterns.SimpleFactory |
1 | ...... |
1 | namespace DesignPatterns.SimpleFactory |
1 | IMeterFactory meterFactory = new MeterFactory(); |
Out:1
2
3
4
5
6Type A
Type B
Type A
Type B
Type A
Type B
仪表状态上线、发送、离线状态切换
1 | namespace DesignPatterns.State |
1 | namespace DesignPatterns.State |
1 | namespace DesignPatterns.State |
1 | namespace DesignPatterns.State |
1 | IState state = new OnlineState(); |
Out:1
2
3
4当前状态:DesignPatterns.State.SendState
当前状态:DesignPatterns.State.Offline
状态结束
状态为空
使用不同策略封装命令
1 | namespace DesignPatterns.Strategy |
1 | namespace DesignPatterns.Strategy |
1 | namespace DesignPatterns.Strategy |
1 | namespace DesignPatterns.Strategy |
1 | IPacket packetA = new PacketA(); |
Out:1
220
50
访问仪表对象和传感器对象
1 | namespace DesignPatterns.Visitor |
1 | namespace DesignPatterns.Visitor |
1 | namespace DesignPatterns.Visitor |
1 | namespace DesignPatterns.Visitor |
1 | namespace DesignPatterns.Visitor |
1 | namespace DesignPatterns.Visitor |
1 | Visitor.Meter meter = new Visitor.Meter(); |
Out:1
2
3获取仪表数据:仪表数据
获取仪表数据:压力
获取仪表数据:温度
解析不同协议
1 | namespace DesignPatterns.TemplateMethod |
1 | namespace DesignPatterns.TemplateMethod |
1 | namespace DesignPatterns.TemplateMethod |
1 | AbstractUnpack unpackA = new UnpackA(); |
Out:1
2
3
4
5
6解包地址
验证CRC
解包A协议数据
解包地址
验证CRC
解包A协议数据
定义厂家接口,每个厂家可以生产自己的仪表和传感器
1 | namespace DesignPatterns.FactoryBase |
1 | using System; |
1 | using System; |
1 | using System; |
1 | using System; |
1 | using System; |
1 | using DesignPatterns.FactoryBase; |
1 | using System; |
1 | using System; |
1 | var factoryA = new FactoryA(); |
Out:1
2
3
4Meter A
Sensor A
Meter B
Sensor B
M每种仪表可选N种通信方式
1 | namespace DesignPatterns.Bridge |
1 | namespace DesignPatterns.Bridge |
1 | namespace DesignPatterns.Bridge |
1 | namespace DesignPatterns.Bridge |
1 | namespace DesignPatterns.Bridge |
1 | namespace DesignPatterns.Bridge |
1 | IMeter meterA = new MeterA(); |
1 | 使用TCP通信,通信内容为:A类仪表数据 |
根据不同的指挥者构建不同的命令内容
1 | namespace DesignPatterns.Builder |
1 | namespace DesignPatterns.Builder |
1 | namespace DesignPatterns.Builder |
1 | namespace DesignPatterns.Builder |
1 | using System; |
1 | using System; |
1 | DirectorA directorA = new DirectorA(new CommandBuilder()); |
Out:1
2报文头|报文内容|CRC校验
报文头|报文内容|奇偶校验
权限递推
1 | namespace DesignPatterns.ChainResponsibility |
1 | namespace DesignPatterns.ChainResponsibility |
1 | namespace DesignPatterns.ChainResponsibility |
1 | Handler bossHandler = new BossHandler(null); |
1 | 由经理处理:50 |
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true