一篇博客读懂设计模式之---委派模式

一篇博客读懂设计模式之—委派模式

委派模式可能大家听起来不太熟悉,但是在代码开发的时候却很好用,下面从几个方面来介绍一下

what:是什么?
委派模式:顾名思义,委托其他对象或者实例来帮我们完成任务,既然有委托,那么就有两种角色:委托类和受托类,这两个角色在社会上的关系是平等的,类似于我们现实中的产品经理和普通员工的关系,产品经理委托员工来帮他完成任务,产品经理只关心结果:你做好没?至于怎么做他并不关心,典型的干活的是你(普通员工)成功是我的(项目经理),委派模式也是只关心结果。

why:为什么会出现这种模式:为了隐藏一些具体的实现逻辑

区别:
与其他模式有什么不同;
工厂模式:为了保证结果的多样性,但是对于用户来说只有一个方法,它是一种有固定模式的委派模式,工厂模式有属于自己的一些固定模板,如下:

在这里插入图片描述
不理解的可以去参考我的另一篇博客:一篇博客读懂设计模式之—工厂模式

**代理模式:**虽然代理模式也是设计到两个对象之间的关系,并且代理对象要持有被代理对象的引用,但是 代理模式更关心的是执行的过程,而委派模式只关心结果,并且委派模式的两个对象地位是平等的,都要实现同一个接口!

下面举个例子让你更好的理解委派模式:
先实现一个接口Executor;

public interface Executor {
    
    
	void executing();
}

实现两个受托类:

public class StaffA implements Executor {
    
    
	@Override
	public void executing() {
    
    
		System.out.println("staff A executor task!");
	}
}
public class StaffB implements Executor {
    
    
	@Override
	public void executing() {
    
    
		System.out.println("staffB execute task");
	}
}

再添加一个委托类:

public class Boss implements Executor {
    
    
	private  Executor executor;

	//这个构造方法是关键
	Boss(Executor executor){
    
    
		this.executor = executor;
	}
	@Override
	public 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在干活,但是实际上是对应的员工在干活(通过构造器传入需要干活的员工)

任务完成!
欢迎留言点赞!!

猜你喜欢

转载自blog.csdn.net/weixin_37766296/article/details/106301389
今日推荐