Java实现
有如下需求,明天周一,需要去公司上班,目前从家里到公司有两种策略,一种是公交,一种是地铁。下面就来实现一下
定义具体策略
1 | public interface IStrategy { |
1 | public class Bus implements IStrategy{ |
1 | public class Subway implements IStrategy { |
最简单的策略调用
1 | public class GoToWork { |
1 | public class Test { |
从上面的代码中可以看出,通过
if else
的使用实现了简单的策略模式。但是,假如有一天我买车了,可以自己开车去上班了。这个时候就需要对GoToWork
类做修改,需要再加一个else if
判断来实现需求。这样就造成了代码的紧耦合。那么,有没有办法解耦,不但能让我开车,甚至开飞机上班都不用修改GoToWork
类呢?
改造
1 | public class GoToWork { |
1 | public class Test { |
可以看到,对
GoToWork
类做完改造后,即满足了我们的需求。
JavaScript实现
之前写表格组件,有一个表格行可编辑的需求。开发人员在使用表格组件时可选择单元格的编辑类型:文本框、下拉框、单选按钮等。并且,为了灵活性,还需要能够让开发人员自定义类型,比如在表格的单元格中日期选择、弹出框选择等。针对该需求,策略模式派上了用场。
实现
1 | (function(W){ |
1 | //使用策略模式动态渲染表格行中的单元格 |
上一篇:设计模式系列之一单例模式
下一篇:设计模式系列之三观察者模式