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

通辽网站建设tlyltd平面设计怎么接单

通辽网站建设tlyltd,平面设计怎么接单,网站建设功能表,wordpress 笔记本主题下载概念: 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每个算法封装到独立的类中,使得它们可以互相替换。通过使用策略模式,客户端可以在运行时选择不同的算法来解决…

概念

策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每个算法封装到独立的类中,使得它们可以互相替换。通过使用策略模式,客户端可以在运行时选择不同的算法来解决问题。

特点

  1. 将算法和使用该算法的客户端代码分离,使得它们可以独立变化。
  2. 可以动态切换和选择不同的算法。
  3. 提高代码复用性和可维护性。

优点

  1. 灵活性:能够在运行时动态切换和选择不同的算法或行为。
  2. 易于扩展:新增加一个具体策略类即可,并且遵循开闭原则。
  3. 降低耦合度:将各个具体策略与上下文解耦,减少彼此之间依赖关系。

缺点

  1. 增加了系统中类的数量和复杂度。
  2. 客户端必须理解各个具体策略之间的区别以及如何选择合适的策略。

适用场景

  1. 当有多个相关但不同实现方式的算法时,可以使用策略模式将这些算法封装成独立的类。
  2. 当需要在运行时动态地选择算法或行为时,可以使用策略模式来实现灵活性。

实现方式

使用接口方式

实现原理:

通过定义一个公共接口,所有具体策略类都要实现这个接口,并在上下文类中持有该接口类型的对象。在运行时,根据需要选择合适的具体策略对象,并调用其方法来执行相应的算法。

实现代码:

// 定义一个公共策略接口
interface Strategy {void execute();
}// 具体策略类A
class ConcreteStrategyA implements Strategy {@Overridepublic void execute() {System.out.println("Executing strategy A");// 具体算法A的实现逻辑...}
}// 具体策略类B
class ConcreteStrategyB implements Strategy {@Overridepublic void execute() {System.out.println("Executing strategy B");// 具体算法B的实现逻辑...}
}// 上下文类Context持有一个Strategy对象,在运行时可以切换不同具体策略
class Context {private Strategy strategy;public void setStrategy(Strategy strategy) {this.strategy = strategy;}public void executeStrategy() {if (strategy != null) {strategy.execute();}}
}// 使用示例
public class Main {public static void main(String[] args) {// 创建具体策略对象Strategy strategyA = new ConcreteStrategyA();Strategy strategyB = new ConcreteStrategyB();// 创建上下文对象,并设置具体策略对象Context context = new Context();context.setStrategy(strategyA);context.executeStrategy();  // 执行策略Acontext.setStrategy(strategyB);context.executeStrategy();  // 执行策略B}
}

在上述示例中,通过定义Context类持有一个Stategy接口类型的成员变量,可以动态切换和选择不同的算法。每个具体的策略类都实现了execute()方法来执行自己特定的算法逻辑。在客户端代码中,可以根据需要创建不同的具体策略对象,并将其传递给上下文类进行执行。

存在的问题:

  1. 策略模式使用接口方式实现时,可能会导致代码膨胀,因为每个具体策略类都需要实现整个接口,即使某些方法对于特定的具体策略并不适用。
  2. 当需要新增一种算法时,必须创建新的具体策略类并实现整个接口。

使用抽象类方式

实现原理:

通过定义一个抽象基类作为所有具体策略类的父类,并在其中声明抽象方法。每个具体子类提供自己特定实现。上下文通过持有抽象基类对象来调用不同具体子类。

实现代码:

// 定义一个公共抽象基类
abstract class Strategy {public abstract void execute();
}// 具体策略子类A
class ConcreteStrategyA extends Strategy {@Overridepublic void execute() {System.out.println("Executing strategy A");// 具体算法A的实现逻辑...}
}// 具体策略子B
class ConcreteStrategyB extends Strategy {@Overridepublic void execute() {System.out.println("Executing strategy B");// 具体算法B的实现逻辑...}
}// 上下文Context持有一个Strategy对象,在运行时可以切换不同具体策略
class Context {private Strategy strategy;public void setStrategy(Strategy strategy) {this.strategy = strategy;}public void executeStrategy() {if (strategy != null) {strategy.execute();}}
}// 使用示例
public class Main {public static void main(String[] args) {// 创建具体策略对象Strategy strategyA = new ConcreteStrategyA();Strategy strategyB = new ConcreteStrategyB();// 创建上下文对象,并设置具体策略对象Context context = new Context();context.setStrategy(strategyA);context.executeStrategy();  // 执行策略Acontext.setStrategy(strategyB);context.executeStrategy();  // 执行策略B}
}

http://www.yayakq.cn/news/66883/

相关文章:

  • 网站申请要多少钱如何让网站互动起来
  • 如何创办一个网站贵阳最新消息今天
  • 网站开发团队要几个人免费看视频的软件是什么
  • 重庆品牌型网站建设c 网站开发 视频
  • 搜集关键词的网站莱芜建设网站
  • 江干区住房和城市建设局网站茂名网站制作
  • 网站建设开发进度表企业搭建一个营销型网站多少钱
  • c 网站开发视频教程 高清网站开发文件夹
  • 网站备案现状wordpress语言文件编辑
  • 百度ip地址网络优化报告
  • 我想做个网站怎么做做数学题网站
  • 怎么网站设计企业网易邮箱
  • 深圳网站建设 site检察院门户网站建设成效
  • 江苏省建设注册中心网站wordpress 汉化模版
  • 肇庆 网站建设网站空间服务器
  • 建设营销型网站广州微信广告投放推广平台多少费用
  • 罗伯特清崎说的网络营销是什么刚做优化的网站什么能更新
  • 做分析图很好用的网站如何做淘宝客有没有免费的网站
  • 你买域名我送网站好用的百度网盘搜索引擎
  • 全球军事网站博物馆展陈设计公司
  • 深圳营销型网站建设价格百色建设网站
  • 网站开发方向 英语翻译桂林生活网论坛论坛
  • 怎么替换网站模板网页升级紧急通知俏佳人
  • 县区网站服务器机房建设承德网站建设规划
  • 中资源的 域名管理网站织梦建站教程视频
  • 福州市网站建设公司阿里巴巴运营每天必做
  • 怎么弄自己的网站东莞怎么制作网站
  • 亚星网站代理网页游戏排行榜前十名超清画面
  • 电商培训网站网站建设客户需求表 文库
  • 淘宝网站建设的目标双公示 网站专栏建设