导航:首页 > 编程语言 > java设计模式代理模式

java设计模式代理模式

发布时间:2022-07-10 07:10:05

java设计模式之代理模式:

很简单:对外部提供统一的接口方法,而代理类在接口中实现对真实类的附加操作行为,从而可以在不影响外部调用情况下,进行系统扩展。也就是说,我要修改真实角色的操作的时候,尽量不要修改他,而是在外部在“包”一层进行附加行为,即代理类。

例如:接口A有一个接口方法operator(),真是角色:RealA实现接口A,则必须实现接口方法operator()。客户端Client调用接口A的接口方法operator()。
现在新需求来了,需要修改RealA中的operator()的操作行为。怎么办呢?如果修改RealA就会影响原有系统的稳定性,还要重新测试。这是就需要代理类实现附加行为操作。创建代理ProxyA实现接口A,并将真实对象RealA注入进来。ProxyA实现接口方法operator(),可以增加附加行为,然后调用真实对象的operator()。从而达到了“对修改关闭,对扩展开放”,保证了系统的稳定性。我们看客户端Client调用仍是接口A的接口方法operator(),只不过实例变为了ProxyA类了而已。
建议看看《软件秘笈:设计模式那点事》,当中讲解的很详细,例子也很生动,读了收获很大!希望以上内容对你有帮助!

❷ JAVA动态代理设计原理及如何实现

Java动态代理机制的出现,使得Java开发人员不用手工编写代理类,只要简单地制定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分配到委托对象上反射执行,配置执行过程中,开发人员还可以进行修改

代理设计模式

代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息、过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。

  1. 为了保持行为的一致性,代理类和委托类通常会实现相同的接口

2. 引入代理能够控制对委托对象的直接访问,可以很好的隐藏和保护委托对象,也更加具有灵活性

代理机制及其特点

首先让我们来了解一下如何使用 Java 动态代理。具体有如下四步骤:

  1. 通过实现 InvocationHandler 接口创建自己的调用处理器;

  2. 通过为 Proxy 类指定 ClassLoader 对象和一组 interface 来创建动态代理类;

  3. 通过反射机制获得动态代理类的构造函数,其唯一参数类型是调用处理器接口类型;

  4. 通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数被传入。

代理类实例的一些特点

  1. 每个实例都会关联一个InvocationHandler(调用处理器对象),在代理类实例上调用其代理接口中声明的方法时,最终都会由InvocationHandler的invoke方法执行;

  2. java.lang.Object中有三个方法也同样会被分派到调用处理器的 invoke 方法执行,它们是 hashCode,equals 和 toString;

代码示例

最后以一个简单的动态代理例子结束

❸ java-接口的代理设计模式

代理设计模式是有解决特定的问题的先决条件的,即:假定代码中Network 的实现类 Real 中的代码作为第三方库或者其他形式的代码功能实现【不能被修改或者改变】,此时如果我们想在实际应用Real类中的 browser 方法时,在此方法调用前后添加其他业务逻辑代码,同时做到不破坏 Real 类的目的,我们需要引入【代理 Proxy】的设计模式来解决此问题(此设计模式被 Spring 中的 AOP 切面编程应用)

//定义业务接口
interfaceNetwork{
voidbrowse();
}
//----------------------------------------//
//Real实现类,此时我们不想修改人家代码哦!咋整?
//----------------------------------------//
classRealimplementsNetwork{
publicvoidbrowse(){
System.out.println("Realisworkingforbrowsing");
}
}
//----------------------------------------//
//代理设计模式类
//----------------------------------------//
classProxyimplementsNetwork{
//按照接口编程,把Real的父类的类型当做成员变量放进来,只要有人实现了
//Network类,都能在本类实例化的时候传进来,对不?
privateNetworknetwork;

//此时实现了Network的类型就被扔进来了
publicProxy(Networknetwork){
this.network=network;
}

publicvoidbrowse(){
//其他的业务逻辑Blahblah~~~
this.network.browse();
//其他的业务逻辑Blahblah~~~
}
}
//此时这个类也属于了Network的实现类,但是我们的browse()方法中,业务代码更
//丰富了,更厉害了,对不?^_^
publicstaticvoidmain(String[]args){
Networknet=newProxy(newReal())
//此时我们的browse方法,既没有改Real人家的代码,又比人家
//代码更厉害了,Real现在只是Proxy类的一个内部小变量了.
net.browse();
}

❹ java中的设计模式都有哪些

Java中的23种设计模式:
Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式),
Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式),
Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式),
Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),
Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),
Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),
Observer(观察者模式), State(状态模式), Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)

❺ JAVA23种设计模式

一、大约分为三类:

1、创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。

二、设计模式遵循的原则有6个:

1、开闭原则(Open Close Principle)

对扩展开放,对修改关闭。

2、里氏代换原则(Liskov Substitution Principle)

只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。

3、依赖倒转原则(Dependence Inversion Principle)

这个是开闭原则的基础,对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)

使用多个隔离的借口来降低耦合度。

5、迪米特法则(最少知道原则)(Demeter Principle)

一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则(Composite Reuse Principle)

原则是尽量使用合成/聚合的方式,而不是使用继承。继承实际上破坏了类的封装性,超类的方法可能会被子类修改。

❻ 简述JAVA的几种设计模式

JAVA中使用设计模式写代码能使代码重用、直观、可靠,共有23种设计模式,分别是:
创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式;
结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式;
行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式,

❼ Java代理的三种模式有什么

Java的三种代理模式简述

本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇文章中讲述。

代理模式是什么

代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展。

比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing()。

假如你希望,通过你的某种方式生产出来的歌手对象,在唱歌前后还要想观众问好和答谢,也即对目标对象Singer的sing方法进行功能扩展。

但是往往你又不能直接对源代码进行修改,可能是你希望原来的对象还保持原来的样子,又或许你提供的只是一个可插拔的插件,甚至你有可能都不知道你要对哪个目标对象进行扩展。这时就需要用到java的代理模式了。网上好多用生活中的经理人的例子来解释“代理”,看似通俗易懂,但我觉得不适合程序员去理解。程序员应该从代码的本质入手。

❽ java中常用到得设计模式有哪几种

Java中的23种设计模式:
Factory(工厂模式),Builder(建造模式),Factory
Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式),
Composite(合成模式),Decorator(装饰模式),
Flyweight(享元模式),
Proxy(代理模式),Command(命令模式),
Interpreter(解释器模式),
Visitor(访问者模式),Iterator(迭代子模式),
Mediator(调停者模式),
Memento(备忘录模式),Observer(观察者模式),
State(状态模式),
Strategy(策略模式),Template
Method(模板方法模式),
Chain
Of
Responsibleity(责任链模式)
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

❾ java常用的的设计模式和开发模式都有哪些

设计模式主要分三个类型、创建型、结构型和行为型。设计模式分:3种类型及23种模式。

JAVA中的开发模式:MVC是一个很常用的程序开发设计模式,M-Model(模型):封装应用程序的状态;V-View(视图):表示用户界面;C-Controller(控制器):对用户的输入作出反应,创建并设置模型。

(9)java设计模式代理模式扩展阅读

创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。

结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。

行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。

❿ Java的设计模式都有哪些

一共23种设计模式!

引用《软件秘笈-设计模式那点事》书籍:

按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式。
创建型模式用来处理对象的创建过程;结构型模式用来处理类或者对象的组合;行为型模式用来对类或对象怎样交互和怎样分配职责进行描述。

创建型模式用来处理对象的创建过程,主要包含以下5种设计模式:
 工厂方法模式(Factory Method Pattern)
 抽象工厂模式(Abstract Factory Pattern)
 建造者模式(Builder Pattern)
 原型模式(Prototype Pattern)
 单例模式(Singleton Pattern)

结构型模式用来处理类或者对象的组合,主要包含以下7种设计模式:
 适配器模式(Adapter Pattern)
 桥接模式(Bridge Pattern)
 组合模式(Composite Pattern)
 装饰者模式(Decorator Pattern)
 外观模式(Facade Pattern)
 享元模式(Flyweight Pattern)
 代理模式(Proxy Pattern)

行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式:
 责任链模式(Chain of Responsibility Pattern)
 命令模式(Command Pattern)
 解释器模式(Interpreter Pattern)
 迭代器模式(Iterator Pattern)
 中介者模式(Mediator Pattern)
 备忘录模式(Memento Pattern)
 观察者模式(Observer Pattern)
 状态模式(State Pattern)
 策略模式(Strategy Pattern)
 模板方法模式(Template Method Pattern)
 访问者模式(Visitor Pattern)

阅读全文

与java设计模式代理模式相关的资料

热点内容
不能修改的pdf 浏览:736
同城公众源码 浏览:474
一个服务器2个端口怎么映射 浏览:282
java字符串ascii码 浏览:59
台湾云服务器怎么租服务器 浏览:460
旅游手机网站源码 浏览:315
android关联表 浏览:929
安卓导航无声音怎么维修 浏览:320
app怎么装视频 浏览:423
安卓系统下的软件怎么移到桌面 浏览:80
windows拷贝到linux 浏览:753
mdr软件解压和别人不一样 浏览:886
单片机串行通信有什么好处 浏览:324
游戏开发程序员书籍 浏览:848
pdf中图片修改 浏览:275
汇编编译后 浏览:478
php和java整合 浏览:833
js中执行php代码 浏览:447
国产单片机厂商 浏览:62
苹果手机怎么设置不更新app软件 浏览:289