产品设计培训东莞网络推广及优化

news/2025/9/24 1:10:10/文章来源:
产品设计培训,东莞网络推广及优化,广东建设网证件查询,建站哪家好wordpress有时候因为种种原因导致我们会写出很多丑陋的代码#xff0c;比如赶工时#xff0c;短暂性的偷懒#xff0c;不会设计模式等等导致代码沉积#xff0c;一个cs上万行代码这样场景是有发生#xff0c; 当然这里也包括我。。。所以时间充裕一点之后就想重构一下#xff0c;…有时候因为种种原因导致我们会写出很多丑陋的代码比如赶工时短暂性的偷懒不会设计模式等等导致代码沉积一个cs上万行代码这样场景是有发生 当然这里也包括我。。。所以时间充裕一点之后就想重构一下毕竟项目中的需求是不断变更的面对需求变更尽量做到最低限度的修改代码最大化的扩充 新代码还有一点就是不要过分的追求设计模式做到适可为止太设计模式了会导致类太多不好管理在项目开发中其实仔细考虑一下你会发现很多业 务逻辑都有相应的设计模式帮你优化毕竟这些都是前辈们踩了无数的坑经过无数的苦难留下来的智慧结晶。很多人列举设计模式都喜欢用生活中的例子但 毕竟生活中的例子如何应用到项目中对我们程序员来说还是比较抽象的所以这里我就列举我们实际的业务逻辑场景。 一实际场景介绍 我们在做千人千面的时候为了防止各大邮箱服务商对我们的邮件营销内容做屏蔽处理我们采用的策略就是众多模板库中随机抽取一封html样式表然后结 合具体的商品列表生成完全不一样风格的营销内容邮件争取最大可能的不被屏蔽而用户自己通过我们系统做的营销邮件我们又不能随机发送而是用户生成 什么样的邮件我们就发什么样的邮件ok现在这里就有两种策略场景了两种场景的最终目的都是生成邮件内容对吧。 1. 普通商家做营销活动的邮件这种策略没什么好说的是什么就发什么。 2.千人千面场景下的营销活动邮件这种策略采用随机抽取的模式 目前来说我们就这两种场景谁也指不定以后还会不会有其他的策略出来所以有必要用策略模式玩一下。 二构建UML 从vs2005开始就有一个强大的功能根据cs文件自动生成uml类图非常的直观也更容易的帮助我们设计更加合理的类图。 上面就是策略模式的uml图各个策略类中都有一个Setup方法用来设置email的内容具体各个类中的代码如下 1 AbstractStrategy public abstract class AbstractStrategy{ public abstract void Setup();} 2 RandStrategy public class RandStrategy : AbstractStrategy { public override void Setup() { Console.WriteLine(千人千面模式下的邮件发送); } } 3 StraightStrategy  public class StraightStrategy : AbstractStrategy { public override void Setup() { Console.WriteLine(普通商家发送的邮件); } } 4StrategyContext public class StrategyContext { AbstractStrategy strategy null; public void SetStrategy(AbstractStrategy strategy) { this.strategy strategy; } public void Setup() { this.strategy.Setup(); } } 5 Program class Program { static void Main(string[] args) { StrategyContext context new StrategyContext(); //设置“随机策略“ context.SetStrategy(new RandStrategy()); context.Setup(); //设置 ”直接发送“ context.SetStrategy(new StraightStrategy()); context.Setup(); } } 最后我们运行一下 上面就是一个最简单的策略模式当我们设置不同的策略就会执行相应的行为实际当中并不会这么简单毕竟设计模式只是一个最优化的提炼排除干扰看本质。 三生产应用 首先生产中我们的AbstractSetup中的Setup方法肯定是要带有参数的而不是简单的无参如下 /// summary /// 短信邮件彩信设置模型 /// /summary public abstract class AbstractSetup { public abstract void Setup(LeafletEntity leaflet, DataRow row); } 然后直接赋值的逻辑也非常的简单需要根据数据库中设置的业务逻辑判断。 public class StraightSetup : AbstractSetup { public override void Setup(LeafletEntity leaflet, DataRow row) { //非顾问 leaflet.Title MySqlDbHelper.GetString(row, title); leaflet.SMSContent leaflet.CommunicationtypeEnum.HasFlag(CommunicationTypeEnum.短信) ? MySqlDbHelper.GetString(row, content) : string.Empty; leaflet.EDMContent leaflet.CommunicationtypeEnum.HasFlag(CommunicationTypeEnum.邮件) ? MySqlDbHelper.GetString(row, content) : string.Empty; leaflet.MMSContent leaflet.CommunicationtypeEnum.HasFlag(CommunicationTypeEnum.彩信) ? MySqlDbHelper.GetString(row, content) : string.Empty; leaflet.SendSMSCount Convert.ToInt32(row[sendcount]); } } 接下来就是随机抽取逻辑这个也是通过读取随机表来进行各种操作简单的代码如下 public class RandSetup : AbstractSetup { EventMarketingBLLNew eventMarketingBLLNew new EventMarketingBLLNew(); public override void Setup(LeafletEntity leaflet, DataRow row) { var eventMarketingInfo eventMarketingBLLNew.GetEventMarketingInfo(leaflet.MarketingID, leaflet.ShopID); if (eventMarketingInfo ! null) { //“短信”和“邮件”信息 var communicationInfo eventMarketingInfo.EventmarketingSmsEdmContentList.OrderBy(m Guid.NewGuid()) .FirstOrDefault(); if (communicationInfo null) return; if (leaflet.CommunicationtypeEnum.HasFlag(CommunicationTypeEnum.邮件)) { //第三步动态生成邮件模板 var styleInfo CacheUtil.GetRandomEmailStyle(); var tuple new EdmDraftBoxBLL().GetEdmHtmlTitle(communicationInfo.EDMJson, styleInfo.StyleId); leaflet.Title tuple.Item1; leaflet.EDMContent tuple.Item2; leaflet.Header tuple.Item3; leaflet.SendSMSCount 1; } if (leaflet.CommunicationtypeEnum.HasFlag(CommunicationTypeEnum.短信)) { leaflet.SMSContent communicationInfo.SMSContent; leaflet.SendSMSCount communicationInfo.SMSCount; } if (leaflet.CommunicationtypeEnum.HasFlag(CommunicationTypeEnum.彩信)) { leaflet.MMSContent communicationInfo.MMSContent; } } } } 最后就是策略上下文 public class SetupContext { AbstractSetup abstractSetup null; public void Set(AbstractSetup abstractSetup) { this.abstractSetup abstractSetup; } public void Setup(LeafletEntity leaflet, DataRow row) { this.abstractSetup.Setup(leaflet, row); } } 好了这个就是给大家演示的策略模式简单来说就是一句话针对同一命令或行为不同的策略做不同的动作。  原文地址http://www.cnblogs.com/huangxincheng/p/6347633.html.NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dw网页制作教程个人网站网站建行接口

1.概述 在13.0的系统rom产品开发中,有定制功能需要要求设置默认输入法,替换掉系统的输入法,所以这就需要了解设置输入法的相关功能需求,然后根据输入法包名来设置默认输入法 接下来就来看如何实现相关功能的开发 2.第三方输入法app设置系统默认输入法的核心代码 framewor…

河北邯郸网站制作硬件开发设计流程

字节跳动后端工程师实习生笔试题链接 笔试题 1. 最大映射2. 木棒拼图3. 魔法权值4. 或与加 1. 最大映射 有 n 个字符串,每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字,不同字符映射为不同的数字。这样每个字符串就可以看…

巨野网站建设长沙网

原来一直用SortList,SortedDictionary来作为键值对存储的排序集合来用,心中就默认是以key按ascall排序来存放的,在之前的案例中也没有出现问题,在最近一个demo中,打破了原来的自以为是的认识,因为在key中不…

惠州网站建设产品单页设计模板

React 中使用高阶函数 随着前端技术的快速发展,React 作为一种流行的 JavaScript 库,被广泛应用于 Web 开发中。在 React 中,高阶函数被引入作为一种强大的工具,用于增强组件的复用性和可维护性。本论文将介绍 React 中使用高阶函…

云南省建设工程投标中心网站asp.net窗体网站

一、说明 中号机器学习模型在训练后必须使用测试集进行评估。我们这样做是为了确保模型不会过度拟合,并确保它们适用于现实生活中的数据集,与训练集相比,现实数据集的分布可能略有偏差。 但为了使您的模型真正稳健,仅仅通过训练/测…

旅游网站设计方案怎么做企业公示信息查询系统湖北

小补充,在上一篇转载的文章中《RedHat/Fedora等非ubuntu的Linux系统星空极速netkeeper拨号上网》中提到{方法一,Debian下突破星空极速拨号用了一个“pon”命令,完整的拨号命令是“pon dsl-provider”,}&…

设计一个学院网站哪里有网站建站公司

要在CSS3中实现动画的无限循环,你可以使用animation 属性和 infinite 关键字。以下是一个示例: keyframes myAnimation {0% { /* 起始状态 */ }50% { /* 中间状态 */ }100% { /* 结束状态 */ }}.element {animation: myAnimation 2s infinite; /* 设置动…

手机网站推荐做一个简单网站

MySQL数据库的导入,有两种方法:1) 先导出数据库SQL脚本,再导入;2) 直接拷贝数据库目录和文件。在不同操作系统或MySQL版本情况1. 概述MySQL数据库的导入,有两种方法:1) 先导出数据库SQL脚本,再导…

自己做产品品牌网站专业订制网站制作

UIAbi lity的启动模式简介 一共有四种:singleton,standard,specified,multion。在项目目录的:src/main/module.json5。默认开启模式为singleton(单例模式)。如下图 singleton(单实例模式)启动模式 每个UIAbility只存在唯一实例。任务列表中只会存在一…

太仓做企业网站建筑模板规格型号

在现代社会中,移动设备和互联网已经成为我们日常生活中不可或缺的一部分。为了方便我们的网络使用,越来越多的人选择使用公共WiFi,但是安全性成了很大的问题。而随着共享WiFi贴的出现,我们是否可以更加安全便捷地使用WiFi呢&#…

央企 网站建设 公司网站前置审批项

1.工具-->选项-->文本编译器-->C#-->高级-->勾选支持导航到反编译源(试验)

仿it资讯类网站源码搜索引擎关键词排名

HTTP基础 基本概念:HTTP是一种计算机之间交流通信的规范,它允许数据在两点之间传输,这个过程可以包括中转或接力。HTTP不仅仅包括文本,还可以包括图片、音频等超文本。状态码:HTTP状态码分为五类: 2xx&…

电子商务公司简介怎么写镇江网站建设方式优化

课程名称2020年最新天码营-Java提高班,资源教程下载课程介绍初学者先广在精,关注代码背后的实现,关注内功修炼,了解实现原理和思想,形成自己完整的技术体系,知识成片之后就容易触类旁通,进步的速…

做布料的著名网站桂林市卫生学校

1.什么是编程? 编程是让计算机执行特定任务的过程,通过使用某种编程语言编写代码,让计算机解决某个问题,并最终得到一个结果 2.计算机程序 计算机程序是一组计算机能识别和执行的指令,告诉计算机该做什么 3.计算机语…

海外制作网站电池外贸一般在哪些网站做

看看普通人和高手是如何回答这个问题的? 普通人 Zookeeper 是一种开放源码的分布式应用程序协调服务 是一个分布式的小文件存储系统 一般对开发者屏蔽分布式应用开发过过程种的底层细节 用来解决分布式集群中应用系统的一致性问题 高手 对于 Zookeeper 的理解…

dede织梦建站教程wordpress主导航菜单

桂林电子科技大学 学校层级:双非 调剂专业:081000 信息与通信工程 发布时间:2024.1.21 发布来源:网络发布 背景:欢迎广大08工学专业考生调剂进我的课题组,电子信息专业,也欢迎往届同学调剂…

Markdown基本与阿法

欢迎使用 OpenWrite 开始写作您的文章... 这是一个二级标题 您可以使用 Markdown 语法:粗体文字 斜体文字 行内代码// 代码块示例 console.log(Hello OpenWrite!);这是一个引用块链接示例

seo站长工具平台phpmysql网站开发实例

如果有重装过anaconda,在C盘的用户目录下,会有一个名叫.condarc的文件会自动生成。 当使用conda install和conda create命令会出现下面的问题:Collecting package metadata (current_repodata.json): failed 解决方案: 1.打开Anac…

个人 可以备案做分类信息网站吗免费广告发布平台app

1、PNG图片类型 PNG格式有8位、24位、32位三种,下面是一些术语: 索引透明:类似于GIF,某一像素只有全透和全不透明两种效果Alpha透明:半透明PNG8 8位的PNG最多支持256(2的8次方)种颜色&#xff0…

做网站运营用什么配置电脑平面设计网站大全有哪些

将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法? 输入格式: 输入在一行中给出待换的零钱数额x∈(8,100)。 输出格式: 要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出…