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

做网站第一次见客户网站被黑是什么原因

做网站第一次见客户,网站被黑是什么原因,做金融资讯用什么网站程序,网站建设课设总结报告一、基本概念 既然你已经接触到了设计模式,那你大概率你写过类似这样的代码:根据不同的选择条件(如排序、搜索或路由)执行不同的代码逻辑。通常的解决方案是使用if-else或switch语句,但这些条件判断有一个最大的问题是…

一、基本概念

既然你已经接触到了设计模式,那你大概率你写过类似这样的代码:根据不同的选择条件(如排序、搜索或路由)执行不同的代码逻辑。通常的解决方案是使用if-elseswitch语句,但这些条件判断有一个最大的问题是不够灵活,难以扩展(也就是违背了开闭原则)。
策略模式是一种行为型设计模式,策略模式提供了一种更优雅的解决方案,你可以定义一系列算法,然后将每个算法封装成独立类,使得无需修改核心逻辑就能在不同算法(代码逻辑)间自由切换。

The algorithm can change without changing the context that uses it.
相比于将所有代码逻辑硬编码在一个庞大的类中,更好的方案是编写不同的策略(算法),然后将它们灵活的插入上下文。

案例类比:去公司的交通方式。
假设你是一只每天可以睡到10点才去上班的哈基米,有以下交通方式可选:
• 共享单车:环保但费力
• 公交:便宜但不够灵活(可能还要步行一段儿)
• 嘀嘀打车:唯一的缺点就是贵
这些都是交通策略(可以看做一个个独立的算法)。根据时间、预算或心情,你可以选择不同策略。决策逻辑不变,只是切换策略而已,这和策略模式在代码中的使用方式比较相似。

2. 使用案例

2.1 情景引入

扩展刚才的案例,假设你跳槽了,换了一家公司,但你对公司所在位置不熟悉,正在学习软件开发的你打算开发一个导航应用,支持多种出行方式的路线规划。

  • 步行路线
  • 自行车路线
  • 公交路线
  • 驾车路线

在v1版本,你只实现了你最常用的公交路线。随后陆续添加了步行、自行车和驾车等功能。最终你完成了这样的路线计算方法:

if (mode.equals("bus")) {// 驾车路线代码逻辑
} else if (mode.equals("walk")) {// 步行路线代码逻辑
} else if (mode.equals("bike")) {// 自行车路线代码逻辑
} else { // 其他模式... 
}

随着路线规划方式的增加,if-else变得越来越多。如果你打算和朋友协作完成这个项目,你会发现代码修改不方便,甚至合并时还会产生冲突。

2.2 解决方案——策略模式

2.2.1核心概念
  • 策略接口:声明算法规约(如execute()方法)。
  • 具体策略:实现策略接口的不同算法。
  • 上下文:持有策略引用并将行为委托给这个引用。
  • 客户端:选择使用哪种策略并注入上下文。
2.2.2 Java实现

第一步:定义策略接口

public interface RouteStrategy {String execute();
}

第二步:实现具体策略

// 驾车路线策略
public class DriveStrategy implements RouteStrategy {@Overridepublic String execute() {return "Bike route";}
}// 步行路线策略
public class WalkStrategy implements RouteStrategy {@Overridepublic String execute() {return "Walk route";}
}// 公共交通路线策略
public class MassTransitStrategy implements RouteStrategy {@Overridepublic String execute() {return "MassTransit route";}
}

第三步:上下文类

public class Context {// 注入策略接口(持有引用)private RouteStrategy routeStrategy;public void setRouteStrategy(RouteStrategy routeStrategy) {this.routeStrategy = routeStrategy;}// 行为委托给这个引用public String getRoute() {if (routeStrategy == null) {throw new IllegalStateException("未设置策略!");}return routeStrategy.execute();}
}

第四步:客户端选择策略

public class Client {public static void main(String[] args) {Context context = new Context();context.setRouteStrategy(new DriveStrategy());System.out.println("驾车路线: " + context.getRoute());context.setRouteStrategy(new WalkStrategy());System.out.println("步行路线: " + context.getRoute());context.setRouteStrategy(new MassTransitStrategy());System.out.println("公共交通路线: " + context.getRoute());}
}

执行结果
在这里插入图片描述

3. 策略模式 vs 状态模式

策略模式(Strategy) 和 状态模式(State) 看起来很相似:二者都通过委托实现,替换一个实现了相同接口的不同对象。但它们在设计意图、控制流和动机上存在本质区别。

策略模式状态模式
设计意图核心是让客户端(外部调用者)选择具体算法,关注的是可独立变化的行为。例如上述案例中选择不同路径计算逻辑。用于表示一个对象在不同时间点的不同状态或条件,其状态转换由对象自身的内在逻辑决定
控制流客户端显式决定使用哪种策略(如通过 setStrategy(…) 动态切换)状态转换由上下文对象内部驱动,行为随状态自动改变,客户端通常无需感知具体状态。
感知与状态转换​​各策略对象之间​​相互独立​​,彼此无感知。例如,快速排序策略无需知道冒泡排序的存在。状态对象通常​​知晓其他状态​​,并能主动触发转换。例如,媒体播放器的 PlayingState(播放状态)可自行切换到 PausedState(暂停状态)。
使用场景算法可能变化且应由客户端选择时对象行为需要根据其生命周期演变时

4. 策略模式适用场景

在以下情况使用策略模式:
• 需要支持多种实现方式(算法)
• 需在运行时切换逻辑
• 希望遵循开闭原则
• 要避免if-else或switch语句膨胀

优缺点分析
优点

• 运行时切换算法
• 符合单一职责原则,代码更清晰
• 添加新算法不影响核心逻辑
• 便于测试和扩展

缺点
• 需要创建更多类
• 客户端必须了解策略选择
• 对简单任务可能过度设计

5. 总结

策略模式是管理算法变化的优雅方案。通过将行为委托给策略类,避免了if-else语句的混乱。

http://www.dtcms.com/a/514780.html

相关文章:

  • 有关网站建设的文章电子商务平台网站开发
  • 取消网站备案流程杭州网站设计公司电话
  • 四川手机响应式网站建设设计哪个网站能免费下载电影
  • 自适应网站搭建邮箱登陆登录入口
  • 库尔勒北京网站建设大连品尚茗居装修公司怎么样
  • 网站的前端开发东莞做网站哪个公司最好
  • 济南市建设局网站查房产信息头条网站怎么做
  • 聊城网站优化网络推广怎么做垂直门户网站
  • 宁波seo关键词优化报价海淀区seo搜索引擎
  • 微信网站开发 js框架哪里可以学网站开发
  • 网站设计要多久网站开发 慕课
  • 网站建设擎宇WordPress如何去掉文章时间
  • 做网站网页维护手机App开发页面排版布局
  • 棋牌论坛网站怎么做个人网站 可以做淘宝客吗
  • 本地wordpress环境搭建seo快速排名软件案例
  • 景德镇做网站哪家好如何做好营销型网站建设
  • 做网站设计怎么样室内设计奖项有哪些
  • 江门市专业做网站公司做网站时怎么更改区域内的图片
  • 做一个电子商城网站建设方案淮安企业网站制作
  • 茂名网站制作维护wordpress搜索增加条件
  • 河北邢台是不是很穷网站站内优化案例
  • 网站建设公司排网站地图做计划任务
  • 如何建购物网站东莞中堂网站建设
  • 做网站全屏尺寸是多少钱wordpress侧边栏位置
  • 麻章手机网站建设销客多微分销系统
  • 宁波做网站seowordpress企业主题 视频教程
  • 企业网站的域名是该企业的推推蛙网站诊断
  • 网站开发的网站广东省建设工程金匠奖公布网站
  • 网站优化推广排名调试网站解析域名影响
  • 网站备案 机构需要什么手续网站建设需要学什么证