一个接口,多个具体实现类,一个容器(供用户使用,利用了接口的特性)
优点:高内聚低耦合,易于扩展,策略类之间可以自由切换
缺点:维护各个策略类会给开发带来额外的开销;调用者需要知道所有的策略类
二、具体实现
三个人上班,各有分工,
接口
public interface IJob{ public void doSomething(); }
具体实现类,策略类
//员工A负责调研 public class A implements IJob{ public void doSomething(){ System.out.println("我要去北京调研"); } } //员工B负责开发 public class B implements IJob{ public void doSomething(){ System.out.println("我是开发的"); } } //员工C负责测试 public class C implements IJob{ public void doSomething(){ System.out.println("我是测试的"); } }
容器:公司,封装类
public class Company{ private IJob job; public Company(IJob job){ this.job=job; } public void toDo(){ this.job.doSomething(); } }
功能实现
public class Demo{ public static void main(String args[]){ Company c; //公司的测试部 c=new Company(new A()); c.toDo(); //公司的研发部 c=new Company(new B()); c.toDo(); ... } }