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

答题助手网站怎么做的怎么建立网站卖东西

答题助手网站怎么做的,怎么建立网站卖东西,163网易邮箱,白酒网站的建设一、策略模式 概述 在策略模式#xff08;Strategy Pattern#xff09;中#xff0c;一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式 在策略模式中#xff0c;我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略…一、策略模式 概述 在策略模式Strategy Pattern中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式 在策略模式中我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法 主要解决在有多种算法相似的情况下使用 if…else 所带来的复杂和难以维护 何时使用一个系统有许多许多类而区分它们的只是他们直接的行为 策略模式一般用于各种算法上面 优缺点 优点 1、算法可以自由切换 2、避免使用多重条件判断 3、扩展性良好 缺点 1、策略类会增多 2、所有策略类都需要对外暴露 1. 各个角色介绍 1.1 策略类Strategy 策略是一个接口该接口定义若干个操作标识即定义了若干个方法 1.2 环境类 / 策略上下文类Context 上下文是依赖于接口的类是面向策略设计的类如下图 Context 类即上下文包含用策略接口声明的变量如下图的strategy成员变量 上下文提供一个方法如下图Context类中的的 executeStrategy() 方法持有一个策略类的引用最终给客户端调用。该方法委托策略变量调用具体策略所实现的策略接口中的方法实现接口的类重写策略中的方法来完成具体功能 1.3 具体策略类ConcreteStrategy 具体策略是实现策略接口的类如下图的ConcreteStrategyA类和ConcreteStrategyB类。具体策略实现策略接口所定义的方法即给出操作标识的具体方法 2. UML图 3. 具体例子和代码 角色分配 Strategy策略接口OperationAdd加法策略实现策略接口OperationSubtract减法策略实现策略接口OperationMultiply乘法策略实现策略接口OperationDivision除法策略实现策略接口Context策略上下文 3.1 策略接口以及实现类 Strategy package com.vinjcent.pattern.strategy;/*** author vinjcent* description 策略接口*/ public interface Strategy {/*** 实现该接口的方法* param num1 数值1* param num2 数值2* return 计算结果*/int doOperation(int num1, int num2);} OperationAdd package com.vinjcent.pattern.strategy;/*** author vinjcent* description 加法策略*/ public class OperationAdd implements Strategy {Overridepublic int doOperation(int num1, int num2) {return num1 num2;} } OperationSubtract package com.vinjcent.pattern.strategy;/*** author vinjcent* description 减法策略*/ public class OperationSubtract implements Strategy {Overridepublic int doOperation(int num1, int num2) {return num1 - num2;} }OperationMultiply package com.vinjcent.pattern.strategy;/*** author vinjcent* description 乘法策略*/ public class OperationMultiply implements Strategy {Overridepublic int doOperation(int num1, int num2) {return num1 * num2;} }OperationDivision package com.vinjcent.pattern.strategy;/*** author vinjcent* description 除法策略*/ public class OperationDivision implements Strategy {Overridepublic int doOperation(int num1, int num2) {return num1 / num2;} }3.2 策略上下文类 Context package com.vinjcent.pattern.strategy;/*** author vinjcent* description 策略上下文*/ public class Context {private Strategy strategy;public Context(Strategy strategy) {this.strategy strategy;}public Strategy getStrategy() {return strategy;}public void setStrategy(Strategy strategy) {this.strategy strategy;}public int executeStrategy(int num1, int num2) {return strategy.doOperation(num1, num2);} } 3.3 测试主函数 package com.vinjcent.pattern.strategy;/*** author vinjcent*/ public class Main {public static void main(String[] args) {// 策略上下文Context context new Context(new OperationAdd());// 加法策略System.out.println(10 5 context.executeStrategy(10, 5));// 减法策略context new Context(new OperationSubtract());System.out.println(10 - 5 context.executeStrategy(10, 5));// 乘法策略context new Context(new OperationMultiply());System.out.println(10 * 5 context.executeStrategy(10, 5));// 除法策略context new Context(new OperationDivision());System.out.println(10 * 5 context.executeStrategy(10, 5));} } 测试结果 4. 使用场景 如果在一个系统里面有许多类它们之间的区别仅在于它们的行为那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为一个系统需要动态地在几种算法中选择一种如果一个对象有很多的行为如果不用恰当的模式这些行为就只好使用多重的条件选择语句来实现 注意事项 如果一个系统的策略多于四个就需要考虑使用混合模式解决策略类膨胀的问题
http://www.w-s-a.com/news/822745/

相关文章:

  • 网站备案怎么登陆短视频培训学校
  • 百度图片点击变网站是怎么做的北京市建设工程质量监督站网站
  • 在线建站模板重庆网站建设大概需要多少钱
  • 建设网站公司电话号码wordpress 即时通讯
  • 网站设计用的技术拓者吧室内设计网app
  • 河北seo优化_网络建设营销_网站推广服务 - 河北邢台seo网站建设运行情况报告
  • 建设银行内部网站6画册设计是什么
  • 网站建设什么价格网站下拉菜单怎么做
  • flash型网站微信公众号运营策划
  • 想建设个网站怎么赚钱国外学校网站设计
  • 网站设计网页设计系统没有安装wordpress
  • 建网站做哪方面公司百度官网优化
  • 山西网站seo网站采集信息怎么做
  • 同江佳木斯网站建设seo学徒培训
  • 淘宝不能发布网站源码做商品怀化网站制作建设
  • 买空间哪个网站好做我的世界背景图的网站
  • 南京哪里做网站wordpress 增加子目录
  • 刚做的网站搜全名查不到网站很难被百度收录
  • 网站建设与管理期末做网站买空间用共享ip
  • 网络合同怎么签有效南京seo公司哪家
  • 厦门建设网官方网站上海网络网站建
  • 网站制作西安郑州网站建设动态
  • 外贸网站免费推广温州做网站技术员
  • 武冈 网站建设做网站能收回吗
  • 网站做前端把网站扒下来以后怎么做
  • 网站模板素材下载手机做任务佣金的网站
  • 机关网站建设考核测评总结做网站sqlserver排序
  • 凉山州建设厅官方网站html5下载教程
  • 内网网站建设方面政策id97网站怎么做的
  • 福州企业建站系统七米网站建设