首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java设计模式之代理模式【设计模式】

先讲一个段子,有四个人物,分别是张三,我,张三老婆,日本某公司(自己脑补哈) 静态代理 张三想要去日本某公司买xxx,但是对于经费等等一系列的原因然后就放弃了这个念头,我刚好要去日本玩的,张三得知我要去日本...,他就偷偷给我说,他想要一个size为D的xxx,让我帮他代购一个,于是我就带着他的需求去日本某公司购入了xxx,然后买完之后回国拿给了张三。...在这个过程中,我作为代理对象(我带着张三的需求【购买的动作即为接口,他的需求即为方法和参数】),张三作为被代理对象。我帮他购买这个过程就叫做代理。...又有一个环境,即当张三的老婆也需要女性的xxx,也偷偷的让我代购,那么我又要亲自过去帮她买,但是想想,我作为一个d代理,一会儿帮这个买,一会儿帮那个买,每次买的东西还不一样,想想,如果作为代码写成一个系统代码是不是会非常的多...动态代理 我开了一家代购公司,张三联系到我们公司,我们公司的A员工刚好要去日本做代购,于是带着他的需求去代购了,张三老婆也要买日本的另外一款产品,B员工帮他去代购了,这样的代理对象永远都是动态的(Proxy.newInstance

68430

java设计模式之工厂模式【设计模式】

工厂模式: 这里用百度百科的词条来解释: 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。...著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象。...在我们java生态中,spring对工厂模式运用的可算是极致了,顶级类BeanFactory是bean的最顶级的工厂类... 在这里,我模拟一下工厂模式: 先说一下工厂模式需要的角色: 机器?...试想,天下的面条种类那么多,工厂模式是非常容易扩展的,实现思路即java的“多态” 这里,就已经实现了一个简单的工厂模式,即简单工厂模式 当你的宝马机器生产宝马的时候,这个时候只需要拓展Machine类即可...的工厂模式。

86140
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java设计模式(4)-原型设计模式

    这篇推文学习创建型模式最后一种-原型模式,该模式的思想是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象,以便使用 首先需要了解对象深、浅复制的概念: 浅拷贝:将一个对象复制后,基本数据类型的变量都会重新创建...所有的Java类都继承至Object,而Object类提供了一个clone()方法,该方法可以将一个java对象复制一份,因此在java中可以直接使用clone()方法来复制一个对象。...异常 Java中任何实现了Cloneable接口的类都可以通过调用clone()方法来复制一份自身然后传给调用者。...如果系统要保存对象的状态,而对象的状态变化很小,或者对象本身占内存不大的时候,也可以使用原型模式配合备忘录模式来应用。...相反,如果对象的状态变化很大,或者对象占用的内存很大,那么采用状态模式会比原型模式更好。

    48150

    java — 设计模式

    设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。...一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。...还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。...三、Java中具体的设计模式 1.简单工厂模式(Simple Factory) 根据提供给它的参数,返回的是几个可能产品中的一个类的实例。 ?...(Singleton)   单例对象(Singleton)是一种常用的设计模式。

    987120

    Java设计模式

    本文链接:https://blog.csdn.net/github_39655029/article/details/82736019 设计模式基础 设计模式主要基于的面向对象设计的原则:...结构模式:涉及类和对象组成,继承概念用于组成接口并定义方法组合对象以获得新功能; 行为模式:侧重于对象之间的通信; J2EE模式:设计表示层,由Sun Java Center标识; 创造设计模式...; 验证结果; 抽象工厂模式 接口负责创建相关对象的工厂,而不明确指定他们的类,每个生成的工厂可按照工厂模式提供对象; 单例模式 设计一个类,负责创建一个对象,同时确保只创建一个对象,类提供一种方法来访问它的唯一对象...:表示层代码可以是JSP,servlet或UI java代码; 业务代理:为客户端实体提供对业务服务方法的访问的单入口点类; 查找服务:负责获得相关业务的实施和提供业务的委托对象业务对性爱难过的访问;...NULL对象类,不提供此类的任何实现,且无需检查空值; MVC模式 模型:表示携带数据对象或JAVA POJO,若其数据改变也可以具有逻辑来更新控制器; 视图:表示模型包含的数据的可视化层; 控制器

    1K10

    Java 设计模式

    设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结 设计模式分为 23 种经典的模式,根据用途我们又可以分为三大类。...分别是创建型模式、结构型模式和行为型模式 列举几种设计原则,这几种设计原则将贯通全文: 面向接口编程,而不是面向实现。...结构型模式 前面创建型模式介绍了创建对象的一些设计模式,这节介绍的结构型模式旨在通过改变代码结构来达到解耦的目的,使得我们的代码容易维护和扩展。...这是一个简单的设计模式,我们直接上代码再说吧。...总结 学习设计模式的目的是为了让我们的代码更加的优雅、易维护、易扩展。这次整理这篇文章,让我重新审视了一下各个设计模式,对我自己而言收获还是挺大的。

    93150

    Java设计模式

    Java设计模式 今天一直在思考一个让我疑惑的问题,在用 SpringBoot 进行项目开发的时候,有这样一个场景,比如说家具和物料是两个不同的模块,有一个调用的是我们小米数字门店通用的接口,代码的实现逻辑都是一致的...,我想用什么方式可以把它抽象成一个公共的方法,这样相同的代码不用的 provider 间 copy 出两份。...我最开始的思路是把方法提成一个定义在 assets-app 目录下的公共方法,然后在几个对外提供服务的接口里面调用这个抽象出的方法,最终返回三个参数值就可以了。...pom.xml文件中的信赖声明,包括当前项目和导入的依赖包(不隶属于当前项目) 又详细翻看了一下之前调用数字门店 pom 文件中的配置,跟上面描述的一致,确实已经声明了对于外部依赖包的导入。...最主要是你可以随时在需求的地方,把相应的 provider 引入进来,实现公共方法的调用,再也不需要每个 provider 自己写一遍内部逻辑完全一模一样的方法了。

    14410

    Java设计模式-外观模式

    我又来了,继Java设计模式之桥接模式后,现在来到了外观模式啦,外观模式又称为门面模式啦,下面慢慢来啦。...一张旧图,恍惚间念起旧人 Java设计模式-外观模式 一、前言 1)引入: 2)概述: 3)角色结构: 4)使用场景 二、案例 代码: 三、总结 优点: 缺点: 四、自言自语 一、前言 1)引入: 在以前...客户(Client)角色:通过一个外观角色访问各个子系统的功能。 4)使用场景 (1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。...\Java设计模式-外观模式.assets\外观模式.png)] 代码: 电视类 public class TV { public void on() { System.out.println...当然这只是一个体现的外观模式的小demo,实际中并不全是一样的,设计模式也是根据实际的软件设计需求来进行应用的,多数情况下都是几种设计模式一起用的。

    24520

    Java设计模式-组合模式

    组合模式: 将对象组合成树形结构以表示‘部分-整体’的层次结构, 使得用户对单个对象和组合对象的使用具有一致性....解析 组合模式描述了如何将容器和叶子节点进行递归组合, 使用户在使用时可一致的对待容器和叶子, 为处理树形结构提供了完美的解决方案....当容器对象的指定方法被调用时, 将遍历整个树形结构, 并执行调用. 整个过程递归处理. ? (图片来源: 设计模式: 可复用面向对象软件的基础) 模式实现 案例: 杀毒软件 ?...使对文件(Image/Text/Video/…)杀毒与对文件夹(Folder)的杀毒暴露统一接口. Component 为组合模式中的对象声明接口, 在适当情况下, 实现所有类共有接口的默认行为...., 客户端调用需要作出相应判断, 带来了不便, 关于该问题的详细信息可参考: 组合模式(Composite)的安全模式与透明模式.

    82760

    Java设计模式-命令模式

    在对象的结构和创建问题都解决了之后,就剩下对象的行为问题了: 如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就会提高....(图片来源: 设计模式: 可复用面向对象软件的基础) 模式实现 案例:以饭店点菜为例-点餐 客户不需要直接向大厨下达点菜命令, 而是通过给服务员书写菜单, 然后服务员再具体指挥大厨照单做菜, 菜单是一种...(案例来源: 大话设计模式) Receiver 命令接收者: 提供很多方法调用, 负责执行与请求相关业务逻辑; 厨师: 只负责做各种各样的菜. /** * @author jifang * @since...一个调用者并不需要在设计时确定其接受者, 因此它只与抽象命令Command存在关联.通过调用Command的execute()间接调用Receiver的相关操作: public class WaiterInvoker...优点 较容易设计一个命令队列; 较容易将命令记录日志; 允许接受请求的一方决定是否要否决请求; 较容易地实现对请求的撤销与重做; 由于添加新的具体命令对其他类没有任何影响, 因此增加新的具体命令很容易

    70260

    java设计模式---代理模式

    代理模式 代理模式有两个概念:代理者和被代理者,代理者要想在人前为被代理者处理各种事情,那么代理者就必须知道被代理者能够干什么。...代理者和被代理者其实是具有相同的功能的,只不过是代理在表面周旋,被代理者实际操作,那么用我们java来说要实现两者具有相同的功能,那么代理者和被代理者两个对象(Object)就是实现想通过的接口(interface...我现在用一个形象生动地来列子来描述一下代码模式,相信看过古装电视剧的同学们都知道里面少不有一个地方那就怡红院,里面有一个老鸨(代理者)、苏小小(被代理者)、陈圆圆(被代理者)、客官(调用代理者Object...IWomanProxy.java[代理者和被代理者公共接口] /** *定义了一个怡红院女人做事的接口 */ public interface IWomanProxy{ public viod...SuWomanProxy);//客官就是喜欢苏小小,老鸨也乐意 mama2.drinking(); mama2.play(); } } 以上例子应该可以体现代理模式的意思吧

    26830

    Java设计模式-工厂模式

    工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。...在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。...3、设计一个连接服务器的框架,需要三个协议,”POP3”、”IMAP”、”HTTP”,可以把这三个作为产品类,共同实现一个接口。...注意事项:作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。...有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。

    33220

    Java设计模式—工厂模式

    抽象工厂模式(Abstract Factory)  三个设计模式名字中都含有“工厂”二字,其含义是使用工厂(一个或一系列方法)去生产产品(一个或一系列类的实例)。...是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。 2、具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。...在java中它由具体的类来实现。 3、抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。 4、具体产品角色:具体工厂角色所创建的对象就是此角色的实例。...在java中由具体的类来实现。 首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。   ...上边的工厂方法模式是一种极端情况的抽象工厂模式(即只生产一种产品的抽象工厂模式),而抽象工厂模式可以看成是工厂方法模式的一种推广。

    32220

    JAVA 设计模式 组合模式

    用途 组合模式 (Component) 将对象组合成树形结构以表示“部分-整体”的层次结构。 组合模式使得用户对单个对象和组合对象的使用具有唯一性。 组合模式是一种结构型模式。...结构 图-组合模式结构图 Component : 组合中的对象声明接口...目录的内容可以是文件,也 可以是目录。 按照这种方式,计算机的文件系统就是以递归结构来组织的。如果你想要描述这样的数据结构,那么你可以使用组合模式。...要点 组合模式定义由 Leaf 对象和 Composite 对象组成的类结构; 它使得客户端变得简单; 它使得添加或删除子部件变得很容易。 推荐 本文属于 JAVA设计模式系列 。...参考资料 《大话设计模式》《HeadFirst设计模式》

    594100

    Java设计模式——策略模式

    大家好,又见面了,我是你们的朋友全栈君。 策略模式 1.策略模式简介 策略模式:策略模式是一种行为型模式,它将对象和行为分开,将行为定义为 一个行为接口 和 具体行为的实现。...()) Context: 环境类 /上下文类: 上下文是依赖于接口的类(是面向策略设计的类,如下图Context类),即上下文包含用策略(接口)声明的变量(如下图的strategy成员变量)。...这样就会导致后期的维护性非常差。当后期需要新增计费方式,还需要在这里再加上if(),也不符合设计模式的开闭原则。...策略模式提供了管理相关的算法族的办法。 策略模式提供了可以替换继承关系的办法。 使用策略模式可以避免使用多重条件转移语句。...策略模式让算法独立于使用它的客户而变化,也称为 政策模式。策略模式是一种对象行为型模式。

    44830

    Java设计模式-策略模式

    策略模式: 定义一系列的算法, 将其一个个封装起来, 并使它们可相互替换, 使得算法可独立于使用它的客户而变化....(图片来源: 设计模式: 可复用面向对象软件的基础) 策略模式对应于解决某一问题的一个算法族, 允许用户从该算法族中任选一个算法解决该问题, 同时可以方便的更换算法或者增加新的算法....Context完成: 在基础策略模式中,选择所用具体Strategy实现的职责由Client承担, 并将其传递给Context, 这种方案对Client的负担较重, 因此将Context与简单工厂融合...场景 当使用一个算法的不同变体, 且这些变体可以实现为一个算法族时; 算法的客户不需要知晓其内部数据, 策略模式可以避免暴露复杂的、与算法相关的数据结构; 一个类定义了多种行为, 且这些行为以多个条件语句形式出现...相关模式 Flyweight: Strategy对象经常是很好的轻量级对象.

    91860

    JAVA 设计模式 命令模式

    用途 命令模式 (Command) 将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化; 对请求排队或请求日志,以及支持可撤销的操作。 命令模式是一种行为型模式。...结构 图-命令模式结构图 Command : 用来声明执行操作的接口。...3、命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。...5、命令模式的关键在于引入了抽象命令接口,且发送者针对抽象命令接口编程,只有实现了抽象命令接口的具体命令才能与接收者相关联。 推荐 本文属于 JAVA设计模式系列 。...参考资料 《大话设计模式》《HeadFirst设计模式》

    82260

    Java设计模式-工厂模式

    说白了--就是工厂提供产品给客户(按照提供的方式不同分成三类:简单工厂、工厂、抽象工厂) 具体简介看下面: image.png 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式...著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。...--- 如 Dog 抽象工厂类:工厂提供创建产品的方法、工厂方法模式的核心(简单工厂模式无此抽象类),与应用程序无关。是具体工厂必须实现的接口或者必须继承的父类。...工厂模式针对的是一个产品等级结构,抽象工厂模式针对的是面向多个产品等级结构的。 最主要的是可以在类内部对产品族的关联关系进行定义和描述。...使用有限 从工厂模式的示例可以看出:工厂模式需要类实现它的接口并且在业务内部存在明显的继承关系,比如汽车和奔驰宝马的关系。

    53720

    【设计模式】Java设计模式之模板方法模式

    转载请注明出处:http://chenhaoxiang.cn 本文源自【人生之旅_谙忆的博客】 模板方法模式初探 我们先这样来想象一个生活中的场景, 就是我们在银行柜台进行办理业务的时候,...我们具体看Step2,银行是无法知道我们的信息的,所以无法由银行具体实现了,所以留下接口,需要我们自己去实现。 现在我们再继续看下去 ---- 什么是模板方法 模板方法模式是类的行为模式。...这就是模板方法模式的用意。 比如定义一个操作中的算法的骨架,将步骤延迟到子类中。模板方法使得子类能够不去改变一个算法的结构即可重定义算法的某些特定步骤。...2、重构时(把相同的代码抽取到父类中) 新功能加入时 3、重要、复杂的算法,核心算法设计为模板算法 模板方法模式的优点: 1、封装性好 2、复用性好 3、屏蔽细节 4、便于维护...模板方法模式的缺点: 1、继承 继承是面向对象的语言的一个核心的特性! Java是单继承语言,也就是一个类只能有一个父类!

    33410
    领券