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

上海seo网站设计做网站需要什么学历

上海seo网站设计,做网站需要什么学历,申请自媒体平台注册,小程序卖货怎么样目录 一.场景 1.1场景 2.2 何时使用 2.3个人理解 二. 业务场景练习 2.1业务: 2.2具体实现 2.3思路 三.总结 3.1策略模式的特点: 3.2策略模式优点 3.3策略模式缺点 一.场景 1.1场景 许多相关的类仅仅是行为有异,也就是说业务代码需要根据场景不…

目录

一.场景

1.1场景

2.2 何时使用

 2.3个人理解

二. 业务场景练习

 2.1业务:

2.2具体实现

2.3思路 

 三.总结

3.1策略模式的特点:

 3.2策略模式优点

3.3策略模式缺点


一.场景

1.1场景

  1. 许多相关的类仅仅是行为有异,也就是说业务代码需要根据场景不同,切换不同的实现逻辑
  2. 一个类定义了多种行为,并且这些行为在类的操作中以多个条件语句的形式出现,也就是说代码中存在大量 if else 逻辑判断

2.2 何时使用

   当一件任务可以使用不同的方式来完成,就可以使用策略模式 

 2.3个人理解

  策略模式简单理解,应该是对于同一个业务功能,在不同的场景需求下提供不同的实现逻辑,来达到动态切换业务算法,满足不同场景的目的。同时它也有另外的好处,即优化代码结构,使其脱离大量逻辑判断,对外只提供 Context上下文,让算法与实际业务代码解耦,对使用者屏蔽底层实现逻辑。

  对于我们根据不同的场景, 会定义应对不同场景相应的方法, 然而这些方法就是我们的策略, 

策略模式 UML类图如下:

 每个策略通过不同业务条件, 找到相应的算法类或逻辑类 , 最终得到想要的结果 

二. 业务场景练习

 2.1业务:

     我们出行会根据不同的交通方式,制定不同的出行方式,比如:自驾、大巴车、高铁、飞机,而每出行方式就是一个定义一个策略。

2.2具体实现

首先:定义一个出行接口

/*** 描述:出行策略接口** @author QU* @date 2023/8/10*/
public interface TripModeStrategy {void tripModeStrategy();
}

策略一:自驾出行

/*** 描述: 自驾出行** @author QU* @date 2023/8/10*/
public class CarTripStrategy implements TripModeStrategy {@Overridepublic void tripModeStrategy() {System.out.println("自驾出行,花费200元,用时6个小时");}
}

策略二:大巴出行

/*** 描述: 公交车出行** @author QU* @date 2023/8/10*/
public class BusTripStrategy implements TripModeStrategy {@Overridepublic void tripModeStrategy() {System.out.println("公交车出行,花费100元,用时8个小时");}
}

策略三:高铁出行

/*** 描述: 高铁出行** @author QU* @date 2023/8/10*/
public class HighSpeedTripStrategy implements TripModeStrategy {@Overridepublic void tripModeStrategy() {System.out.println("高铁出行,花费500元,用时2.5小时");}
}

策略四:飞机出行

/*** 描述: 飞机出行** @author QU* @date 2023/8/10*/
public class AircraftTripStrategy implements TripModeStrategy {@Overridepublic void tripModeStrategy() {System.out.println("飞机出行,花费1000元,用时1个小时");}
}

制定策略输出类

package strategy.trip;/*** 描述: 策略输出** @author QU* @date 2023/8/10*/
public class TripMode {//注入策略private TripModeStrategy tripModeStrategy;TripMode(TripModeStrategy tripModeStrategy){this.tripModeStrategy=tripModeStrategy;}//输出具体策略public void executeTripStrategy(){tripModeStrategy.tripModeStrategy();}
}

制定策略工厂

/*** 描述: 策略工厂** @author QU* @date 2023/8/10*/
public class TripStrategyFactory {/*** 定义map存放所有策略.*/private static final Map<String,TripModeStrategy> TRIP_MODE_STRATEGY_MAP=new HashMap<>();/*** 使用静态方法来加载策略到map中*/static{TRIP_MODE_STRATEGY_MAP.put(TripEnum.CAR,new CarTripStrategy());TRIP_MODE_STRATEGY_MAP.put(TripEnum.BUS,new BusTripStrategy());TRIP_MODE_STRATEGY_MAP.put(TripEnum.HIGH_SPEED,new HighSpeedTripStrategy());TRIP_MODE_STRATEGY_MAP.put(TripEnum.AIRCRAFT,new AircraftTripStrategy());}/*** 使用静态方法通过模拟客户端传接的类型(参数)** @param key 策略类型(客户端用户选择的出行方式)* @return 具体某条策略*/public static TripModeStrategy tripModeStrategy(String key){TripModeStrategy tripModeStrategy = TRIP_MODE_STRATEGY_MAP.get(key);return tripModeStrategy;}

制定出行类型(出行常量)也可以认为我们wed或实际开发项目中的客户端选择的一条策略(用户选择的出行方式)

/*** 描述: 出行常量** @author QU* @date 2023/8/10*/
public class TripEnum {public static final String CAR="car";public static final String BUS="bus";public static final String HIGH_SPEED="high_speed";public static final String AIRCRAFT="aircraft";
}

测试类:

/*** 描述: 测试出行方式** @author QU* @date 2023/8/10*/
public class TripTest {public static void main(String[] args) {//自驾TripModeStrategy tripModeStrategy = TripStrategyFactory.tripModeStrategy(TripEnum.CAR);//大巴车//tripModeStrategy = TripStrategyFactory.tripModeStrategy(TripEnum.BUS);//高铁//tripModeStrategy = TripStrategyFactory.tripModeStrategy(TripEnum.HIGH_SPEED);//飞机tripModeStrategy = TripStrategyFactory.tripModeStrategy(TripEnum.AIRCRAFT);TripMode tripMode=new TripMode(tripModeStrategy);tripMode.executeTripStrategy();}
}

运行结果:这里根据程序运行选择就近原则(最后取变量值),预测是策略四飞机出行

结果:

2.3思路 

  1. 首先根据业务制定出行策略(TripModeStrategy )
  2. 制定策略工厂将策略装进我们的静态代码块在工程启动已执行到map中,静态方法等待调用(tripModeStrategy(String key))
  3. 制定策略输出类,通过客户端选择出行方式去策略工厂中获取静态方法输出策略

 三.总结

3.1策略模式的特点:

高内聚低耦合,可扩展,遵循ocp原则(开放封闭原则)

 3.2策略模式优点

1.策略模式的功能就是通过抽象、封装来定义一系列的算法,使得这些算法可以相互替换,所以为这些算法定义一个公共的接口,以约束这些算法的功能实现。如果这些算法具有公共的功能,可以将接口变为抽象类,将公共功能放到抽象父类里面。

2.策略模式的一系列算法是可以相互替换的、是平等的,写在一起就是if-else组织结构,如果算法实现里又有条件语句,就构成了多重条件语句,可以用策略模式,避免这样的多重条件语句。

3.扩展性更好:在策略模式中扩展策略实现非常的容易,只要新增一个策略实现类,然后在使用策略实现的地方,使用这个新的策略实现就好了。

3.3策略模式缺点

1.客户端必须了解所有的策略,清楚它们的不同:

如果由客户端来决定使用何种算法,那客户端必须知道所有的策略,清楚各个策略的功能和不同,这样才能做出正确的选择,但是这暴露了策略的具体实现。

2.增加了对象的数量:

由于策略模式将每个具体的算法都单独封装为一个策略类,如果可选的策略有很多的话,那对象的数量也会很多。

3.只适合偏平的算法结构:

由于策略模式的各个策略实现是平等的关系(可相互替换),实际上就构成了一个扁平的算法结构。即一个策略接口下面有多个平等的策略实现(多个策略实现是兄弟关系),并且运行时只能有一个算法被使用。这就限制了算法的使用层级,且不能被嵌套。

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

相关文章:

  • 上海网站开发一对一培训上海贸易公司
  • php在网站开发中的应用成都哪里做网站好
  • 如何给网站添加音乐idc服务器租赁
  • 建设微网站多少钱建筑公司是做什么的
  • 云服务器可以做图片外链网站吗百度云分享tp响应式网站开发
  • 网站降权怎么恢复潍坊住房和城乡建设部网站
  • 网站可信度必须做吗哪家微信网站建设好
  • 自己搭建环境建设网站培训机构不退费最有效方式
  • 个人设计师网站 青春建设ipv6网站
  • 菜谱网站开发东阳实惠营销型网站建设厂家
  • 毕设做网站的过程网店怎么开步骤
  • 关于做公司官方网站域名申请请人做网站花多少钱
  • 局域网建站软件企业展厅设计公司图片
  • 成都网站建设餐饮网络营销推广套餐
  • qq钓鱼网站建设物业管理系统论文
  • 网页设计制作网站模板图片达州seo
  • 美术网站建设方案企业邮箱注册申请
  • 网站维护页面 下载wordpress数据库分页
  • 中山网络公司网站建设dw做网站怎么换图片
  • 郑州做网站最好的公司黄骅市属于哪个省哪个市
  • 网站空间流量6g活泼的网站
  • 企业网站 源代码查询网 网站查询
  • 做网站还有搞头吗网络广告的形式有哪些?
  • 信息产业部网站备案查询html在线编程网站
  • 网络服务器无响应改进措施或应对策略广州网站制作公司优化
  • 做婚纱摄影网站淘宝客api同步到网站
  • 建电子商务网站下载网站程序
  • 湖南手机网站建设公司php可以自己做网站吗
  • 广州住建厅官方网站科技进步是国防强大的重要的保证
  • 爱站长尾关键词挖掘工具永平建设有限公司网站