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

广告图文制作seo排名助手

广告图文制作,seo排名助手,网站设计与网站建设,wordpress礼品企业主题策略模式 策略模式的核心在于定义一系列算法,把它们封装起来,并且让它们能够相互替换。策略模式让算法的变化独立于使用算法的客户端。在这个方法里,策略模式的体现如下: convertFunc 参数:这是一个委托类型的参数&a…

策略模式

策略模式的核心在于定义一系列算法,把它们封装起来,并且让它们能够相互替换。策略模式让算法的变化独立于使用算法的客户端。在这个方法里,策略模式的体现如下:

  • convertFunc 参数:这是一个委托类型的参数,其类型为 Func<BaseResponse, TResponse>。它代表一种转换策略,也就是把 BaseResponse 类型的对象转换成 TResponse 类型的对象。不同的转换逻辑可以通过传入不同的 convertFunc 来实现。
  • isValidFunc 参数:同样是委托类型,类型为 Func<TResponse, bool>。它代表一种验证策略,用来判断转换后的 TResponse 对象是否有效。不同的验证逻辑可以通过传入不同的 isValidFunc 来实现。

模板方法模式

模板方法模式定义了一个操作中的算法骨架,把一些步骤的实现延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。在这个方法里,模板方法模式的体现如下:

  • 方法的整体逻辑ProcessResult 方法定义了处理结果的整体流程,像是转换响应对象、验证响应对象、更新总体结果等步骤。这些步骤的顺序和基本逻辑是固定的,相当于模板方法模式中的算法骨架。
  • 可变部分交给委托:而具体的转换和验证逻辑则通过 convertFunc 和 isValidFunc 这两个委托来实现,这类似于模板方法模式中把某些特定步骤的实现延迟到子类中。

代码示例解释

以下是一个简化的代码示例,展示了如何创建 ProcessResult 方法:

public class ResultProcessor
{private readonly GjpClient _gjpClient;//GjpClient 这是请求数据库的接口 为了日志使用可不要public ResultProcessor(GjpClient gjpClient){_gjpClient = gjpClient;} public bool ProcessResult<TResponse>(BaseResponse baseResponse, string operationName, string itemName,Func<BaseResponse, TResponse> convertFunc, Func<TResponse, bool> isValidFunc,out TResponse response, ref bool overallResult)where TResponse : new(){response = new TResponse();if (baseResponse == null){LogError(operationName, itemName, "baseResponse为空!", ref overallResult);return false;}if (baseResponse.status.ToLower() != "success"){LogError(operationName, itemName, "失败信息:" + string.Join(",", baseResponse.messages), ref overallResult);return false;}response = convertFunc(baseResponse);if (!isValidFunc(response)){LogError(operationName, itemName, "响应对象为空或关键信息无效!", ref overallResult);return false;}LogSuccess(operationName, itemName, ref overallResult);return true;}private void LogError(string operationName, string itemName, string errorMessage, ref bool overallResult){_gjpClient.AddLog(TurnLog(operationName, "【" + itemName + "】" + operationName + "失败: " + errorMessage, false, "-1", itemName));overallResult = false;}private void LogSuccess(string operationName, string itemName, ref bool overallResult){_gjpClient.AddLog(TurnLog(operationName, "【" + itemName + "】" + operationName + "成功!", true, "0", itemName));}private Log TurnLog(string Operation, string Message, bool Success, string Code, string UserCode){Log log = new Log();log.RequestTime = DateTime.Now;log.Operation = Operation;log.Message = Message;log.Success = Success;log.Code = Code;log.UserCode = UserCode;return log;}
}

使用示例解释

以下是一个简化的代码示例,展示了如何使用 ProcessResult 方法:

class Program
{static void Main(){ResultProcessor processor = new ResultProcessor();//一般为基类BaseResponse baseResponse = new BaseResponse();bool overallResult = false;CustomResponse customResponse;//OperationName和ItemName可不需要 因为后续是记录日志使用 不需要日志可忽略这两个参数bool result = processor.ProcessResult(baseResponse,"OperationName",//方法名 比如上传商品"ItemName",    //编号 比如商品编号 br => br.data as CustomResponse ,//BaseResponse中的data转类型 不同方法中可转不同类型ir => ir != null && ir.id > 0,//customResponse需要判断的逻辑 比如不为空和ID>0out customResponse,//输出结果 后续可以使用ref overallResult);//输出是否成功Console.WriteLine($"Result: {result}, Overall Result: {overallResult}");}
}public class BaseResponse{/// <summary>/// 是否正确处理请求,返回success或error,不区分大小写/// </summary>public string status { get; set; }/// <summary>/// 处理结果的消息/// </summary>public List<string> messages { get; set; }/// <summary>/// 业务处理的错误代码,参见错误代码表/// </summary>public int errorCode { get; set; }/// <summary>/// 实体信息/// </summary>public object data { get; set; }}public class CustomResponse {/// <summary>/// id/// </summary>public int id{ get; set; }}

在这个示例中,convertFunc 把 BaseResponse 转换为 CustomResponseisValidFunc 验证 CustomResponse 是否有效。ProcessResult 方法定义了处理的整体流程,而具体的转换和验证逻辑则通过委托传入。

综上所述,ProcessResult 方法结合了策略模式和模板方法模式的思想,提高了代码的灵活性和可维护性。

http://www.dtcms.com/wzjs/62813.html

相关文章:

  • 之梦英语版网站怎么做怎么优化
  • 银川市建设厅网站全球搜钻
  • 网站域名跳转是怎么做的广州广告公司
  • 专做公司网站 大庆360站长工具
  • 做网站资料南京seo代理
  • vue.js网站如果做自适应关键词优化seo外包
  • 模板建站源码新闻最近新闻10条
  • 杭州门户网站建设灰色行业关键词推广
  • 哈尔滨道外区建设局官方网站合肥瑶海区
  • 网站备案管局电话网络服务器价格
  • 微信微网站制作教程网站的友情链接是什么意思
  • 北京有几个区几个县网址seo优化排名
  • 营销一型网站建设公司全国疫情实时资讯
  • 有没有专门做装修的网站资源最全的网盘搜索引擎
  • 手机网站建设 如何获得更好的排名百度电脑网页版
  • 人力资源公司起名大全册子深圳seo优化方案
  • 怎么做农产品垂直网站seo推广软件品牌
  • 企业网站收费标准郑州seo排名公司
  • 网站背景居中怎么做怎么制作公司网页
  • 桂电做网站的毕设容易过嘛百度认证考试
  • 做催乳的想上门到哪个网站深圳专业建站公司
  • 信阳网站设计在线推广企业网站的方法有
  • 东莞网站建设怎么样优化推广网站推荐
  • 做分子生物实验常用网站安卓排名优化
  • 局域网聊天工具有哪些优化关键词排名的工具
  • wordpress 上传图片尺寸谷歌优化培训
  • 新手如何做网站合肥seo招聘
  • wordpress文章编辑函数搜索引擎优化包括哪些
  • 做网站界面尺寸是多少营销软文800字范文
  • 网站流量限制it培训机构哪家好