一篇博客读懂设计模式之—委派模式
委派模式可能大家听起来不太熟悉,但是在代码开发的时候却很好用,下面从几个方面来介绍一下
what:是什么?
委派模式:顾名思义,委托其他对象或者实例来帮我们完成任务,既然有委托,那么就有两种角色:委托类和受托类,这两个角色在社会上的关系是平等的,类似于我们现实中的产品经理和普通员工的关系,产品经理委托员工来帮他完成任务,产品经理只关心结果:你做好没?至于怎么做他并不关心,典型的干活的是你(普通员工)成功是我的(项目经理),委派模式也是只关心结果。
why:为什么会出现这种模式:为了隐藏一些具体的实现逻辑
区别:
与其他模式有什么不同;
工厂模式:为了保证结果的多样性,但是对于用户来说只有一个方法,它是一种有固定模式的委派模式,工厂模式有属于自己的一些固定模板,如下:
不理解的可以去参考我的另一篇博客:一篇博客读懂设计模式之—工厂模式
**代理模式:**虽然代理模式也是设计到两个对象之间的关系,并且代理对象要持有被代理对象的引用,但是 代理模式更关心的是执行的过程,而委派模式只关心结果,并且委派模式的两个对象地位是平等的,都要实现同一个接口!
下面举个例子让你更好的理解委派模式:
先实现一个接口Executor;
public interface Executor {void executing();
}
实现两个受托类:
public class StaffA implements Executor {@Overridepublic void executing() {System.out.println("staff A executor task!");}
}
public class StaffB implements Executor {@Overridepublic void executing() {System.out.println("staffB execute task");}
}
再添加一个委托类:
public class Boss implements Executor {private Executor executor;//这个构造方法是关键Boss(Executor executor){this.executor = executor;}@Overridepublic void executing() {System.out.println("boss start dispatcher job!");//看上去好像是我们的项目经理在干活//但实际干活的人是普通员工//这就是典型,干活是我的,功劳是你的executor.executing();}
}
最后添加一个测试类:
public class TestExecutor {public static void main(String[] args) {Boss boss = new Boss(new StaffA());boss.executing();Boss boss1 = new Boss(new StaffB());boss1.executing();}
}
从上面的测试类我们可以看出,虽然表面看起来是Boss在干活,但是实际上是对应的员工在干活(通过构造器传入需要干活的员工)
任务完成!
欢迎留言点赞!!