当前位置: 首页 > article >正文

我的实用设计模式之 关于Policy-based design在Windows Mobile网络连接管理的应用

Raw Data原数据使用不要的分析器分析器使用不同的算法分析出关心的Event事件对象告警等等。同时作为behavior模式之一stragety模式也可以使用在 定义多个behaviors行为在C#中可以为method或者property来代替大量的条件语句if else或者switch的情景。下面是用案例论述有一个Windows Mobile的手机系统需要定期往服务器提交数据在数据传输时需要网络连接由于这个手机支持3G和Wifi因此可以通过多种硬件连接进行数据提交。下面是一个没有用到OO的设计。public enum ConnectionType{Wifi,ThreeG}public class DataSubmitter{public ConnectionType connectionType;public void SubmitData(){if(!CheckConnection()){MakeConnection();}//submit dataStopConnection();}public bool CheckConnection(){switch(connectionType){case ConnectionType.Wifi:CheckWifiConnection();break;case ConnectionType.ThreeG:CheckThreeGConnection();break;}}public bool MakeConnection(){switch(connectionType){case ConnectionType.Wifi:MakeWifiConnection();break;case ConnectionType.ThreeG:MakeThreeGConnection();break;}}public bool StopConnection(){switch(connectionType){case ConnectionType.Wifi:StopWifiConnection();break;case ConnectionType.ThreeG:StopThreeGConnection();break;}}}数据提交程序Client每次提交数据都需要调用CheckConnection,MakeConnection如果需要StopConnection这些behaviors.但是由于硬件连接有多种需要使用条件语句(if else或者switch case)来表达不同behavior。如果新增一种新的网络连接方式例如新增GPRS那么需要修改client来完成。试想一下应用程序应该不关心具体的网络连接例如msn和QQ不管Windows的连接这个链接可能是wifi可能是有线网络可能是拨号。作为上层应用的msn和QQ不会关心这些具体网络连接技术msn更加不可能需要修改程序来支持新的网络连接方式。为了解决这个问题我们引进Strategy模式。public enum ConnectionType{Wifi,ThreeG,Gprs}//strategypublic interface Connection{//behaviorsbool Connect();bool Disconnect();bool IsConnected {get;}}public class WifiConnection : Connection{public bool Connect(){//invoke wifi api to make connectionreturn true;}public bool Disconnect(){//invoke wifi api to stop connectionreturn true;}public bool IsConnected{get{//invoke wifi api to check connectionreturn true;}}}public class ThreeGConnection : Connection{public bool Connect(){//invoke ThreeG api to make connectionreturn true;}public bool Disconnect(){//invoke ThreeG api to stop connectionreturn true;}public bool IsConnected{get{//invoke ThreeG api to check connectionreturn true;}}}public class GprsConnection : Connection{public bool Connect(){//invoke Gprs api to make connectionreturn true;}public bool Disconnect(){//invoke Gprs api to stop connectionreturn true;}public bool IsConnected{get{//invoke Gprs api to check connectionreturn true;}}}//Contextpublic class ConnectionManager{private DictionaryConnectionType, Connection connections;private Connection currentConnection;public ConnectionManager(){foreach(setting from configurations) // this is fake code{ConnectionType type; // get from configurationsconnections[type] ConnectionFactory.CreateConnection(type);}}public bool CheckConnection(){//according to specific requirement, pick up one of connections to connectcurrentConnection connections[ConnectionType.Wifi];return currentConnection.Connect();}public bool MakeConnection(){return currentConnection.Disconnect();}public bool StopConnection(){return currentConnection.IsConnected;}}//connection factorypublic sealed class ConnectionFactory{public static Connection CreateConnection(ConnectionType connectionType){try{System.Reflection.Assembly asm System.Reflection.Assembly.GetExecutingAssembly();Type type typeof(ConnectionFactory);return (Connection)asm.CreateInstance(type.Namespace . connectionType.ToString() Connection);}catch (Exception e){Console.WriteLine(e.Message);}return null;}}//clientpublic class DataSubmitter{public ConnectionManager connectionMgr;public void SubmitData(){if(!connectionMgr.CheckConnection()){connectionMgr.MakeConnection();}//submit dataconnectionMgr.StopConnection();}}Connection是Strategy父类定义需要实现的behaviors在C#里面是method和propertyConnectionManager是Context负责管理各

相关文章:

我的实用设计模式之 关于Policy-based design在Windows Mobile网络连接管理的应用

Raw Data(原数据)使用不要的分析器(分析器使用不同的算法)分析出关心的Event(事件,对象,告警等等)。同时作为behavior模式之一,stragety模式也可以使用在 定义多个behavi…...

炉石传说HsMod插件终极指南:55项免费功能解锁全新游戏体验

炉石传说HsMod插件终极指南:55项免费功能解锁全新游戏体验 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 你是否厌倦了炉石传说中冗长的动画等待?是否想要更流畅的游戏体…...

如何高效管理LiteDB数据库?LiteDB.Studio实战指南与深度解析

如何高效管理LiteDB数据库?LiteDB.Studio实战指南与深度解析 【免费下载链接】LiteDB.Studio A GUI tool for viewing and editing documents for LiteDB v5 项目地址: https://gitcode.com/gh_mirrors/li/LiteDB.Studio 在现代软件开发中,嵌入式…...

NVMe-CLI:Linux系统下NVMe固态硬盘管理的瑞士军刀

NVMe-CLI:Linux系统下NVMe固态硬盘管理的瑞士军刀 【免费下载链接】nvme-cli NVMe management command line interface. 项目地址: https://gitcode.com/gh_mirrors/nv/nvme-cli 你是否曾经为Linux系统中的NVMe固态硬盘管理而烦恼?想要查看设备健…...

MySQL 8.0.34和5.7.43双版本共存安装指南(Windows环境避坑大全)

MySQL 8.0与5.7双版本共存实战:Windows环境全流程避坑指南 1. 版本共存的核心挑战与解决方案 在开发环境中同时运行MySQL 8.0和5.7版本的需求日益普遍——可能是为了兼容旧系统,或是测试应用在不同版本下的表现。但Windows环境下实现双版本共存会遇到几个…...

传统文化与现代AI结合:Guohua Diffusion国风绘画商业应用案例

传统文化与现代AI结合:Guohua Diffusion国风绘画商业应用案例 1. 国风绘画生成工具概述 Guohua Diffusion是一款专为国风绘画设计的本地生成工具,基于原生Guohua-Diffusion模型开发。这款工具完美融合了中国传统绘画艺术与现代AI技术,为艺术…...

告别重复编码:用快马平台ai一键生成node.js效率工具脚本

最近在维护一个Node.js项目时,经常需要统计代码量。手动一个个文件查看实在太费时间,于是尝试用InsCode(快马)平台快速生成了一个代码统计工具,效果出乎意料地好。 需求分析 核心功能:需要递归扫描目录下的所有.js文件&#xff…...

DAMOYOLO-S惊艳效果案例集:多领域高难度场景检测展示

DAMOYOLO-S惊艳效果案例集:多领域高难度场景检测展示 今天咱们不聊枯燥的理论和复杂的部署,直接来看点“硬货”。如果你正在寻找一个能在各种刁钻场景下都表现稳定的目标检测模型,那么DAMOYOLO-S绝对值得你花几分钟了解一下。它不是什么新概…...

Java EE开发技术 (报错解决 BeanCreationException)

该报错因为使用构造注入时没有提供参数列表或没有提供有参构造而造成的修改静态工厂中的参数列表即可...

智慧园区能源管理系统解决方案

某园区集成生产、办公、生活三大功能,建设有生产厂房、化学品库、辅助用房、气罐站、研发楼、综合楼及其他配套设施,涉及到多种用能,包含电能、天然气、压缩空气、冷热能等,带来日益高昂的能耗成本与能源浪费隐患。 1、制冷空调监…...

GPT-SoVITS WebUI 终极指南:5分钟快速上手一站式语音合成解决方案

GPT-SoVITS WebUI 终极指南:5分钟快速上手一站式语音合成解决方案 【免费下载链接】GPT-SoVITS 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) 项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS GPT…...

避开这3个坑,你的软考数据库设计题至少多拿10分:从E-R图合并冲突到SQL约束实战

软考数据库设计题避坑指南:从E-R图到SQL约束的实战技巧 每次软考结束,总有一批考生捶胸顿足——"那道数据库设计题明明会做,怎么又丢分了?"作为参加过三次软考阅卷的数据库讲师,我发现90%的失分都集中在几个…...

Qwen3-14B应用案例:智能客服与内容生成,企业落地实操

Qwen3-14B应用案例:智能客服与内容生成,企业落地实操 1. 为什么选择Qwen3-14B作为企业AI解决方案 在当今企业数字化转型浪潮中,AI技术正从实验室走向实际业务场景。Qwen3-14B作为140亿参数的大型语言模型,在能力与资源消耗之间取…...

PDF智能解析新选择:GLM-OCR支持表格/公式识别,效果惊艳

PDF智能解析新选择:GLM-OCR支持表格/公式识别,效果惊艳 1. 为什么需要新一代OCR技术 在日常办公和学术研究中,PDF文档处理一直是个令人头疼的问题。传统OCR工具在面对复杂版式、嵌套表格或数学公式时,往往表现不佳。想象一下这样…...

ollama部署本地大模型|embeddinggemma-300m嵌入质量评估方法论

ollama部署本地大模型|embeddinggemma-300m嵌入质量评估方法论 1. 引言:为什么需要本地嵌入模型? 想象一下,你正在开发一个智能搜索系统,需要快速理解用户查询的语义含义,并在海量文档中找到最相关的内容…...

Java 零基础全套视频教程,String StringBuffer StringBuilder 类,笔记142-146

Java 零基础全套视频教程,String StringBuffer StringBuilder 类,笔记142-146 一、参考资料 【尚硅谷Java零基础全套视频教程(宋红康主讲,java入门自学必备)】 https://www.bilibili.com/video/BV1PY411e7J6/?p142&share_sourcecopy_web…...

从理论到实践:拆解FOC滑模观测器中的三个关键增益(Gsmopos, Fsmopos, Hsmopos)

从理论到实践:拆解FOC滑模观测器中的三个关键增益(Gsmopos, Fsmopos, Hsmopos) 在永磁同步电机(PMSM)的磁场定向控制(FOC)系统中,滑模观测器(SMO)因其强鲁棒性…...

机器标识重置技术实现的Cursor Pro功能解锁解决方案

机器标识重置技术实现的Cursor Pro功能解锁解决方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial request li…...

Cogito 3B实战案例:GitHub PR描述自动生成+变更点总结

Cogito 3B实战案例:GitHub PR描述自动生成变更点总结 1. 快速了解Cogito 3B模型 Cogito v1预览版是Deep Cogito推出的混合推理模型系列,这个3B版本在大多数标准基准测试中都表现出色,超越了同等规模的其他开源模型。简单来说,它…...

Tencent Hunyuan3D-1.0学术合作机会:腾讯混元团队的研究方向与合作模式

Tencent Hunyuan3D-1.0学术合作机会:腾讯混元团队的研究方向与合作模式 【免费下载链接】Hunyuan3D-1 腾讯开源的Hunyuan3D-1项目,创新提出两阶段3D生成方法,实现快速、高质量的文本到3D和图像到3D转换,融合Hunyuan-DiT模型&#…...

Open-AutoGLM在社交通讯中的应用:自动发微信、刷朋友圈演示

Open-AutoGLM在社交通讯中的应用:自动发微信、刷朋友圈演示 1. 项目概述 1.1 什么是Open-AutoGLM Open-AutoGLM是一款基于视觉语言模型的AI手机智能助理框架。它能通过自然语言指令理解用户需求,自动操控安卓设备完成各种任务。想象一下,只…...

自动驾驶RL微调实战:如何用MotionLM提升模型可靠性(附Waymo数据集配置)

自动驾驶RL微调实战:如何用MotionLM提升模型可靠性(附Waymo数据集配置) 在自动驾驶技术快速迭代的今天,强化学习(RL)微调已成为提升模型可靠性的关键手段。不同于传统模仿学习(IL)的…...

[iPhone USB网络共享]完全指南:从驱动故障到高效连接

[iPhone USB网络共享]完全指南:从驱动故障到高效连接 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_mirr…...

实战踩坑:在华为ENSP模拟器上配置OSPF NSSA区域,为什么外部路由没传出去?

华为ENSP模拟器中OSPF NSSA区域外部路由失效的深度排查指南 当你在华为ENSP模拟器中配置OSPF NSSA区域时,是否遇到过这样的困境:明明按照教程步骤操作,外部路由却像被黑洞吞噬一般无法传递到其他区域?本文将带你深入这个技术迷宫的…...

Local SDXL-Turbo保姆级教程:导出为ONNX格式进一步优化推理速度

Local SDXL-Turbo保姆级教程:导出为ONNX格式进一步优化推理速度 1. 引言:为什么需要导出ONNX? 如果你已经体验过Local SDXL-Turbo那“打字即出图”的畅快感,可能会想:这速度已经很快了,还能不能再快一点&…...

Qwen3-14B惊艳效果展示:RTX 4090D上流畅运行14B模型的真实体验

Qwen3-14B惊艳效果展示:RTX 4090D上流畅运行14B模型的真实体验 1. 开箱即用的高性能体验 当我第一次在RTX 4090D上启动这个Qwen3-14B私有部署镜像时,最直接的感受就是"快"。从执行启动命令到WebUI界面完全加载,整个过程不到2分钟…...

OEC-turbo变废为宝:从吃灰PCDN盒子到家庭服务器,Armbian/OpenWrt刷机实战记录

OEC-turbo硬件改造指南:从闲置PCDN设备到全能家庭服务器 手上闲置的OEC-turbo盒子除了吃灰还能做什么?这款搭载RK3568芯片的设备实际上是一块被低估的硬件宝藏。相比市面上热门的斐讯N1等矿渣设备,OEC-turbo在处理器性能、内存配置和扩展性方…...

新手入门指南:在快马平台用AI生成代码理解云桌面基础概念

今天想和大家分享一个特别适合新手理解云桌面基础概念的实践方法。作为一个刚接触云计算的小白,我最初对"一台主机创建多个云桌面"这个概念也是一头雾水,直到在InsCode(快马)平台上尝试用AI生成代码来模拟这个过程,才真正搞明白其中…...

为什么LivePortrait能吊打Diffusion模型?揭秘快手69M训练数据背后的技术取舍

LivePortrait为何能突破扩散模型瓶颈?解析69M训练数据驱动的工业级优化策略 当开源社区还在为扩散模型的生成质量惊叹时,快手LivePortrait团队已经用12.8ms/帧的推理速度和6.5K GitHub星标证明:在工业级人像动画领域,隐式关键点框…...

Bambu Studio终极实战指南:5大核心技术深度解析与3D打印效率优化方案

Bambu Studio终极实战指南:5大核心技术深度解析与3D打印效率优化方案 【免费下载链接】BambuStudio PC Software for BambuLab and other 3D printers 项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio Bambu Studio作为专为BambuLab系列3D打印…...