OOP中三个原则:封装、继承、多态, 取经地址
1.设计原则####
-
找到应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起,利用封装。
-
针对接口编程(针对超类设计接口,利用多态),而不是针对实现编程。
-
多用组合,少用继承 —— 策略模式精髓。
2.个人愚见###
策略模式我理解应该是算法在源代码中就已经配对好了,例如针对多个输入框内容的判断,有邮箱的判断、手机号、姓名、年龄等不同种功能,这样情况一开始就会对每一个输入进行分配他的策略,然后在判断的时候根据他们自己策略算法执行。
场景一:出游路线: 下拉菜单:简单粗暴游、没心没肺游、废寝忘食游三种选项,每种选项导致的界面效果、消费、天数都会不同。
场景二:出游方式: 下拉菜单:骑自行车、坐汽车、坐火车、坐飞机四个选项,每种选项会出现,费用、消费、时间等不同。结构下图:
3.Strategy Pattern结构
Context:环境类。
Strategy:策略算法的基类,定义了所有支持的算法的公共接口。
ConcreteStrategy:策略算法的基类派生出来的子类,用基类的接口实现了具体算法。
4.Strategy Pattern优缺点###
缺点####
- ConcreteStrategy这样的子类多
- 使用策略类必须要匹配数量、选择策略也需要用户自己选择
- ConcreteStrategy继承自Strategy,自然多了很多没有用的方法创建没用的属性等,所以尽可能拆分的很细,功能越细导致类越多
优点####
- 算法独立出来,易于修改、拓展和增加新算法
- 在Context中易于切换策略
- 业务代码中少了很多if else逻辑判断
5.针对出游方式场景的代码操练###
演示代码 希望多多指教