课时90:代理设计模式
1.1功能的介绍
代理设计模式的主要功能是可以帮助用户将所有的开发注意力只集中在核心业务功能。在正常的开发过程中我们的注意力应该只放在核心业务中。
1.2代理设计
(1)现在如果想吃东西,那么我们现在的主要功能就是吃。核心功能就是 IEat<<interface>>,但是在整个实现过程中对于吃这个概念我们要注意的就是需要有一个真正吃饭的人 EatReal。
在整个设计过程中这块代码关注的只是“吃”业务,它只关注这一点。但是真正想要得到这个吃,应该有一个为“吃”服务的群体 EatProxy。要想得到“吃”这个业务要参与到业务中。
第一点需要准备食材,第二点加工食材,第三点送饭给你吃,第四点收拾碗筷。而第三点才是需要真正关注的业务,所以在整个代码中可能是任何人来“吃”。主类(客户端)应该关注的是“吃”而获得对象,整体结构需要有个基本印象。接下来我们就拿这个结构来进行一个整体设计。
1.3实现代理设计
要想做代理的前提条件是首先准备一个 Interface IEat得到“吃”,目的是开始“吃”一个东西。于是应该有一个真正吃饭的人,跟 Implements找到IEat,它在这个地方关注的是真实主题,更多的关注是得到一份食物,然后开始品尝美味。吃的时候需要一名服务代理 Implements,而服务代理应该为“吃”而服务。
代理为“吃”而生,一定要有一个代理的项,保存“吃”这个概念。在操作之前,我们应该跟上 Prepare准备。准备过程我们就跟上 System.out.println(),到这我们称为代理主题。根据第一步为精心的购买食材,第二步为小心的处理食材。之后我们还需要做一个清洁,于是在这个地方我们再跟上代理主题的第三步,我们把它叫做收拾碗筷。
EatProxy 为 IEat 的接口子类对象,因此需要复写这个处理方法,但这个处理方法只是一个代理。最终是真正的人去吃所以它的目标应该是 Eat.get(),这是保存真正的服务主题。
在这个主题操作之前,应该在吃完之后应该做出清洁准备,对外部而言不关注其他,但是关注准备一个“吃”的代理而后“吃”的代理而后要“吃”的人,当然最好的方法是用通常设计模式做,但是现在不做那么复杂,写完之后跟上 Eat.get()。
我现在是通过代理操作的真实主题,然后对程序进行一个编译和执行。真实主题被代理主题调用,代理主题负责与真实主题有关的业务和有关的收尾业务。但是在客户端操作的时候并不管是代理主题还是真实主题,都只有一个主题调用接口方法,这就是我们所说的代理设计模式。
代码:
Interface IEat{ Public void get() ; } Class EatReal implements IEat{ Public void get() { System.out.println(“【真实主题】得到一份食物,而后开始品尝美味”); } } Class EatProxy implements IEat{ //服务代理 Private IEat eat; //为吃而服务 Public EatProxy(IEat eat){ //一定要有一个代理项 This.eat = eat; } Public void get () { This.prepare() ; This.eat.get(); This.clear(); } Public void prepare() { //准备过程 System.out.println(“【代理主题】1.精心购买食材。”) System.out.println(“【代理主题】2.小心处理食材。”) } Public void clear() { System.out.println(“【代理主题】3.收拾碗筷。”) { } Public class JavaDemo{ Public static void main(String args []){ IEat eat = new EatProxy(new EatReal()); Eat.get(); } }
1.4代理模式的主要特点
一个接口提供有两个子类,其中一个子类是真实业务操作类,另一个主题代理业务操作类,没有代理业务操作,真实业务无法进行。
把代理设计和工厂设计完整的理解了才慢慢的走到一个正确的设计道路上,这个是需要一点点时间进行加强控制的,但前提是要清楚代理设计和工厂设计的整体结构,这个是我们现阶段最为重要的东西,同时代码一定要写出相应的验证代码。