课时90:代理设计模式

简介: 课时90介绍了代理设计模式,该模式通过代理对象帮助用户专注于核心业务功能。代理模式中,客户端只关注核心业务(如“吃”),而代理对象负责准备、执行和清理工作。通过接口IEat、真实主题EatReal和服务代理EatProxy的实现,展示了如何在代码中应用代理模式。代理模式的特点是将业务逻辑与辅助操作分离,使代码更清晰且易于维护。

课时90:代理设计模式

1.1功能的介绍

代理设计模式的主要功能是可以帮助用户将所有的开发注意力只集中在核心业务功能。在正常的开发过程中我们的注意力应该只放在核心业务中。

1.2代理设计

(1)现在如果想吃东西,那么我们现在的主要功能就是吃。核心功能就是 IEat<<interface>>,但是在整个实现过程中对于吃这个概念我们要注意的就是需要有一个真正吃饭的人 EatReal。


在整个设计过程中这块代码关注的只是“吃”业务,它只关注这一点。但是真正想要得到这个吃,应该有一个为“吃”服务的群体 EatProxy。要想得到“吃”这个业务要参与到业务中。


第一点需要准备食材,第二点加工食材,第三点送饭给你吃,第四点收拾碗筷。而第三点才是需要真正关注的业务,所以在整个代码中可能是任何人来“吃”。主类(客户端)应该关注的是“吃”而获得对象,整体结构需要有个基本印象。接下来我们就拿这个结构来进行一个整体设计。

image.png

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();
}
}

image.png

1.4代理模式的主要特点

一个接口提供有两个子类,其中一个子类是真实业务操作类,另一个主题代理业务操作类,没有代理业务操作,真实业务无法进行。


把代理设计和工厂设计完整的理解了才慢慢的走到一个正确的设计道路上,这个是需要一点点时间进行加强控制的,但前提是要清楚代理设计和工厂设计的整体结构,这个是我们现阶段最为重要的东西,同时代码一定要写出相应的验证代码。

相关文章
|
11月前
|
设计模式 XML JSON
二十三种设计模式全面解析-代理模式进阶篇:揭秘远程代理
二十三种设计模式全面解析-代理模式进阶篇:揭秘远程代理
200 0
|
设计模式 缓存 安全
设计模式之代理模式的懂静态代理和动态代理
设计模式之代理模式的懂静态代理和动态代理
174 0
|
1月前
|
设计模式 Java
课时89:工厂设计模式
课时89介绍工厂设计模式(Factory),涵盖接口的定义与使用、程序结构设计及工厂设计的核心概念。通过实例代码展示如何利用接口实现子类的向上转型,并通过工厂类解耦主类与子类的关系,从而实现更灵活和可扩展的设计。工厂模式使客户端无需关心具体子类的创建过程,仅需通过工厂类获取对象实例,简化了系统的维护和扩展。
|
1月前
|
设计模式 Java
课时36:合成设计模式
引用应用分析三:合成设计模式。通过将电脑拆分为显示器、主机等组件,并进一步细分为主板、内存、CPU等,展示如何用类和对象组合构建复杂系统。每个模块独立,最终整合成完整的电脑结构,体现了Java中的合成设计模式。此模式强调模块化设计与引用传递,便于维护和扩展。
|
2月前
|
设计模式 中间件 Java
设计模式3:代理、适配器、装饰器模式
代理模式是一种结构型设计模式,通过中间件解耦服务提供者和使用者,使使用者间接访问服务提供者,便于封装和控制。
65 3
|
1月前
|
设计模式 机器人
课时83:模板设计模式
课时83介绍了模板设计模式,重点讲解了抽象类的定义、实际应用及代码实现。抽象类作为加强型类,提供了更高层次的设计,用于统一管理子类行为。通过机器人、人类和猪三个实例,展示了如何利用抽象类实现不同对象的共性操作,如吃饭、睡觉和工作。代码范例中定义了抽象类`Action`及其子类`Robot`、`Person`和`Pig`,并通过命令模式实现了对这些行为的调用。抽象类的最大优势在于它能规范子类方法的实现,并提供普通方法调用抽象方法的能力,确保程序逻辑的一致性和灵活性。
|
6月前
|
设计模式 网络协议 Java
05.静态代理设计模式
《静态代理设计模式》详细介绍了静态代理的基本概念、原理与实现、应用场景及优缺点。主要内容包括静态代理的由来、定义、使用场景、实现方式、结构图与时序图,以及其在降低耦合、保护对象权限等方面的优势。同时,文章也指出了静态代理的局限性,如缺乏灵活性、难以复用、难以动态添加功能等,并介绍了动态代理如何弥补这些不足。最后,通过多个实际案例和代码示例,帮助读者更好地理解和应用静态代理模式。
73 4
|
7月前
|
设计模式 Java Spring
spring源码设计模式分析-代理设计模式(二)
spring源码设计模式分析-代理设计模式(二)
|
8月前
|
数据安全/隐私保护 C# UED
利用 Xamarin 开展企业级移动应用开发:从用户登录到客户管理,全面演示C#与Xamarin.Forms构建跨平台CRM应用的实战技巧与代码示例
【8月更文挑战第31天】利用 Xamarin 进行企业级移动应用开发能显著提升效率并确保高质量和高性能。Xamarin 的跨平台特性使得开发者可以通过单一的 C# 代码库构建 iOS、Android 和 Windows 应用,帮助企业快速推出产品并保持一致的用户体验。本文通过一个简单的 CRM 示例应用演示 Xamarin 的使用方法,并提供了具体的代码示例。该应用包括用户登录、客户列表显示和添加新客户等功能。此外,还介绍了如何增强应用的安全性、数据持久化、性能优化及可扩展性,从而构建出功能全面且体验良好的移动应用。
107 0
|
8月前
|
设计模式 数据安全/隐私保护 C++
Ruby设计模式大揭秘!代理VS装饰器,你选对了让代码起舞的魔法棒吗?
【8月更文挑战第31天】在软件开发中,设计模式能够提升代码质量和团队协作效率。本文将介绍Ruby中的两种重要模式:代理(Proxy)和装饰器(Decorator)。代理模式通过中间对象控制对目标对象的访问,适用于访问控制、延迟加载等场景;装饰器模式则允许在不改变原对象结构的情况下动态添加新功能,比生成子类更灵活。通过具体示例代码,我们将深入理解这两种模式的实现和应用,帮助开发者更好地选择合适的模式解决问题。
68 0

热门文章

最新文章

下一篇
oss创建bucket