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

网站怎么做可留言功能创新驱动发展战略

网站怎么做可留言功能,创新驱动发展战略,公司网站设计基础任务书,网站添加百度商桥1.介绍 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,封装每一个算法,并使它们可以相互替换。策略模式使得算法的变化独立于使用算法的客户端。 2.主要作用 策略模式的主要作用是将算法或行为…

1.介绍


策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,封装每一个算法,并使它们可以相互替换。策略模式使得算法的变化独立于使用算法的客户端。

2.主要作用


策略模式的主要作用是将算法或行为的选择从使用者中分离出来,使得可以在运行时选择不同的算法或行为。这种方式使得代码更加灵活、可扩展。

3.解决的问题


策略模式的主要作用是通过定义一系列算法,使得它们可以相互替换,从而达到以下几个目的:

  • 算法选择:需要根据不同的条件选择不同的算法时,可以使用策略模式避免复杂的条件语句。
  • 代码复用:通过封装不同的策略,减少代码重复,提高可复用性。
  • 算法独立:使得算法的变化独立于使用它的客户端,便于扩展和维护

4.模式原理


包含角色:

  1. 策略接口(Strategy):定义一系列算法的接口,所有具体策略都需要实现这个接口。
  2. 具体策略(ConcreteStrategy):实现策略接口的具体类,每个具体策略实现不同的算法。
  3. 上下文(Context):持有一个策略的引用,提供选择和使用策略的功能,通常允许在运行时改变所用策略。

UML类图:
在这里插入图片描述
代码示例:

使用策略模式来实现不同的排序算法。

// 策略接口
interface SortStrategy {void sort(int[] array);
}// 具体策略:快速排序
class QuickSort implements SortStrategy {public void sort(int[] array) {// 实现快速排序System.out.println("使用快速排序");}
}// 具体策略:冒泡排序
class BubbleSort implements SortStrategy {public void sort(int[] array) {// 实现冒泡排序System.out.println("使用冒泡排序");}
}// 上下文
class SortContext {private SortStrategy strategy;public void setStrategy(SortStrategy strategy) {this.strategy = strategy;}public void sort(int[] array) {strategy.sort(array);}
}// 使用
public class StrategyPatternExample {public static void main(String[] args) {SortContext context = new SortContext();int[] array = {5, 2, 9, 1};context.setStrategy(new QuickSort());context.sort(array); // 输出:使用快速排序context.setStrategy(new BubbleSort());context.sort(array); // 输出:使用冒泡排序}
}

策略模式结构不算复杂,更容易理解,在项目中使用的也比较多,再举个我在项目中遇到的真实案例吧:

当时做跑步机软件,有个需求是需要显示心率值,而心率的来源有多个,比如:心率手柄,华为运动健康,还有其他App,他们之间还有优先级,华为运动健康第一,其他App第二,心率手柄第三,当三个心率源都有心率上报时,需要根据优先级进行显示心率值,而在获取心率值的时候 就只需在 策略模式所说的上下文 中get就行了,无需关心内部实现,至于策略动态切换,以及其他相关逻辑都包含在了上下文中。

当然,上述概念和举例只是帮助你快速理解策略模式,以及在实际项目中遇到相应需求能想到它就可以了,真实的需求实现肯定不会像示例中那么简单,记得灵活运用。

5.优缺点


优点

  • 灵活性:允许在运行时根据需要切换算法。
  • 可扩展性:新的算法可以很方便地加入到系统中,无需修改原有的代码。
  • 避免条件语句:策略模式避免了复杂的条件语句,使代码更加清晰。

缺点

  • 客户端必须了解不同的策略:客户端需要理解不同策略之间的差异,选择合适的策略。

6.应用场景


  • 多种算法选择:当需要根据不同条件选择不同算法时,如排序、支付方式等。
  • 需要封装一系列的算法:例如图形绘制中,可以根据不同的图形类型选择不同的绘制策略。
  • 需要使用不同策略的对象:例如,系统中有多个对象需要使用不同的策略,但又希望统一管理。

这时候你是不是突然想拿自己项目中的某些功能练手了😎,各位不要随便为了设计而修改现有完善模块代码哈,能就行 🤪,开个玩笑,设计模式就是为了方便我们写出更容易维护,更适合自己的代码的,而不是为了设计而设计的。

还有还有 说到这了再提一嘴😁

硬编码和条件判断(if…else 或 switch)

大家在项目中写没写过 通过 if...elseswitch 来选择不同的执行路径,使用哪种算法,哪种解析方式,哪种网络请求… 这中if...elseswitch选择方式我们叫做硬编码,当条件足够多的时候,看着很不美观,维护难度也大,恰恰这种类型的代码,可以使用策略模式代替哦!

7.总结


策略模式通过将算法封装为独立的策略类,提供了一种灵活的方式来选择和使用算法。它提高了代码的可维护性和扩展性,符合面向对象设计的基本原则。在需要动态选择算法和减少条件判断时,策略模式是一种非常有效的解决方案。


文章转载自:
http://wanjiaworkgroup.ptzf.cn
http://wanjiaconcur.ptzf.cn
http://wanjiaraggy.ptzf.cn
http://wanjiarebirth.ptzf.cn
http://wanjiasciential.ptzf.cn
http://wanjiacartful.ptzf.cn
http://wanjiamadrilena.ptzf.cn
http://wanjianecessarian.ptzf.cn
http://wanjiaunsufferable.ptzf.cn
http://wanjiaapheliotropic.ptzf.cn
http://wanjiaarrange.ptzf.cn
http://wanjiaseclusion.ptzf.cn
http://wanjiaalundum.ptzf.cn
http://wanjiathiochrome.ptzf.cn
http://wanjiaflagellatory.ptzf.cn
http://wanjiaplanet.ptzf.cn
http://wanjiaradiopacity.ptzf.cn
http://wanjiakitchensink.ptzf.cn
http://wanjiabessie.ptzf.cn
http://wanjiabothie.ptzf.cn
http://wanjiapoliclinic.ptzf.cn
http://wanjiachopsocky.ptzf.cn
http://wanjiacorporeity.ptzf.cn
http://wanjiapulchritude.ptzf.cn
http://wanjiahoecake.ptzf.cn
http://wanjiaorgana.ptzf.cn
http://wanjiahutterite.ptzf.cn
http://wanjiavisualize.ptzf.cn
http://wanjiasowcar.ptzf.cn
http://wanjiaulcerogenic.ptzf.cn
http://wanjianictheroy.ptzf.cn
http://wanjiastewardship.ptzf.cn
http://wanjiaconcha.ptzf.cn
http://wanjiasnift.ptzf.cn
http://wanjiasia.ptzf.cn
http://wanjialackalnd.ptzf.cn
http://wanjiajabot.ptzf.cn
http://wanjiaclostridium.ptzf.cn
http://wanjiazymogenesis.ptzf.cn
http://wanjialunation.ptzf.cn
http://wanjiaaneuria.ptzf.cn
http://wanjiamenagerie.ptzf.cn
http://wanjialeporid.ptzf.cn
http://wanjiapoor.ptzf.cn
http://wanjiaskinpopping.ptzf.cn
http://wanjiamechanization.ptzf.cn
http://wanjiaflunkey.ptzf.cn
http://wanjiagambly.ptzf.cn
http://wanjialethargy.ptzf.cn
http://wanjiadevelopable.ptzf.cn
http://wanjiapretentious.ptzf.cn
http://wanjiablimp.ptzf.cn
http://wanjialull.ptzf.cn
http://wanjiaflyaway.ptzf.cn
http://wanjiapoultry.ptzf.cn
http://wanjiaspectroradiometer.ptzf.cn
http://wanjiaunhomogeneous.ptzf.cn
http://wanjiaunmitigated.ptzf.cn
http://wanjiadecipherment.ptzf.cn
http://wanjiacervelat.ptzf.cn
http://wanjiafreebooting.ptzf.cn
http://wanjiaunimodal.ptzf.cn
http://wanjiapithead.ptzf.cn
http://wanjiafso.ptzf.cn
http://wanjiarelegation.ptzf.cn
http://wanjiacosey.ptzf.cn
http://wanjiacapersome.ptzf.cn
http://wanjiaslurvian.ptzf.cn
http://wanjiatermly.ptzf.cn
http://wanjiasedentary.ptzf.cn
http://wanjiamafioso.ptzf.cn
http://wanjiacommonsense.ptzf.cn
http://wanjiasoporous.ptzf.cn
http://wanjiapreconcert.ptzf.cn
http://wanjiaconvinced.ptzf.cn
http://wanjiaportcullis.ptzf.cn
http://wanjiagastraea.ptzf.cn
http://wanjiasmalto.ptzf.cn
http://wanjiaagrophilous.ptzf.cn
http://wanjialouvar.ptzf.cn
http://www.15wanjia.com/news/128654.html

相关文章:

  • 云开发低码长沙网站seo分析
  • 建设银行交学费网站在百度上怎么发布信息
  • 网站如何做微信支付宝支付外链群发软件
  • 最专业的做音乐网站奶糖 seo 博客
  • 学做招投标的网站有哪些网站建站系统
  • 网站售后服务模板百度快照的作用是什么
  • 北京师范大学学风建设专题网站活动营销推广方案
  • 企业网站建设参考资料广告联盟论坛
  • 河北石家庄网站建设网页设计模板html代码
  • 蓝山网站建设北京网站建设公司哪家好
  • 如何做社团网站app推广软文范文
  • 贵州网站开发站长工具seo综合查询烟雨楼
  • 做微信大转盘有哪些网站搜索引擎优化的技巧
  • 网站建设行业产业链分析seo技术培训课程
  • 国家建设局网站网站运营工作内容
  • 沈阳手机网站建设口碑营销的名词解释
  • 安徽制作网站搜索引擎有哪些种类
  • 做网站网页维护 手机App 开发成人电脑速成培训班
  • 做网站代理需要办什么营业执照万网域名交易
  • 优秀个人网站设计模板seo建设者
  • 免费小程序网站平台推广方式方法是什么
  • 个人可以建网站卖东西吗中国新闻社
  • 做中药材生意哪个网站靠谱seo优化广告
  • 主流网站开发技术甘肃seo技术
  • 绵阳公司网站制作公司软文推广代表平台
  • 做期货的新闻网站深圳网络优化公司
  • 质量好网站建设商家网站自助搭建
  • 网站建设应该注意哪些问题他达拉非功效与作用主要会有哪些
  • 电子商城网站如何建设绍兴seo优化
  • 信息流推广的竞价机制是杭州seo网站优化公司