设计模式
文章平均质量分 59
方大拿拿
java开发工程师一枚
展开
-
设计模式--代理模式
与静态代理类相比,动态代理更加灵活,但每次调用代理方法时,动态代理机制都会创建一个新的代理实例对象,所以速度相对较慢。远程代理(Remote Proxy):为一个位于不同的地址空间的对象提供一个本地的代理对象,这个不同的地址空间可以是本机的不同进程,也可以是网络上的一台远程服务器。在CGLIB的代理实现中,我们使用了Enhancer类来生成代理对象,并通过MethodInterceptor接口的实现来定义在方法调用前后的行为。CGLIB代理是通过继承被代理类来创建代理对象的,因此它不需要接口。原创 2024-08-27 14:16:28 · 996 阅读 · 0 评论 -
设计模式--适配器模式
在这个例子中,Adapter 类将 RealTwoPinSocket 的功能适配成了 ThreePinSocket 接口所要求的形式,使得原本只能接受三孔插座的电器设备可以通过这个适配器使用两孔插座进行供电。适配器模式(Adapter Pattern)是一种结构型设计模式,它允许一个接口(通常是新的或现有的)与另一个不兼容的接口一起工作。下面,我将通过一个简单的例子来展示适配器模式的应用。假设我们有一个老式的电源插座(两孔插座),但我们想使用一个需要三孔插座的电器设备。然后,我们实现这两个接口。原创 2024-08-27 09:13:04 · 544 阅读 · 0 评论 -
设计模式--组合模式
在这个例子中,Adapter 类将 RealTwoPinSocket 的功能适配成了 ThreePinSocket 接口所要求的形式,使得原本只能接受三孔插座的电器设备可以通过这个适配器使用两孔插座进行供电。适配器模式(Adapter Pattern)是一种结构型设计模式,它允许一个接口(通常是新的或现有的)与另一个不兼容的接口一起工作。下面,我将通过一个简单的例子来展示适配器模式的应用。下面是一个使用组合模式的简单案例,我们将构建一个文件系统的表示,其中可以包含文件夹(组合对象)和文件(叶子对象)。原创 2024-08-19 16:20:50 · 686 阅读 · 0 评论 -
设计模式-工厂模式
抽象工厂模式(Abstract Factory Pattern)是工厂模式的一种,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在抽象工厂模式中,客户端不依赖于产品类实例是如何被创建、组合和表达的,只依赖于抽象工厂的接口。这提供了高度的灵活性和可扩展性,使得添加新的风格(例如Linux风格)变得简单,只需添加新的具体产品类和工厂类即可。以下是一个使用抽象工厂模式的简单案例,我们将创建一个图形界面的应用程序,这个应用程序支持两种风格的按钮和文本框:Windows风格和Mac风格。原创 2024-08-21 16:19:30 · 367 阅读 · 0 评论 -
设计模式--装饰器模式
在这个例子中,SimpleCoffee 是具体的组件,CoffeeDecorator 是装饰器角色,而 MilkCoffee 和 SugarCoffee 是具体的装饰器,它们给咖啡添加了新的功能(加奶泡、加糖)而不需要修改 SimpleCoffee 的代码。假设我们有一个咖啡类,它提供基本的咖啡类型(如美式、拿铁),我们想要通过装饰器模式给咖啡添加额外的功能,比如加奶泡、加糖等。装饰器类:继承自装饰器角色类,它包含一个指向组件对象的引用,并定义了一个与组件接口一致的接口。装饰器模式的主要组成部分。原创 2024-08-26 17:06:48 · 332 阅读 · 0 评论 -
设计模式--外观模式
*定义:外观模式为子系统中的一组接口提供了一个统一的高层接口,使得子系统更加容易使用。通过定义一个高层接口,使得客户端可以方便地调用子系统中的一组接口,而无需关心子系统内部的复杂结构。结构:外观角色(Facade):这是外观模式的核心部分,也被称为门面角色。外观类为多个子系统对外提供一个共同的接口,使得调用端能够更容易地与系统进行交互。子系统角色(Subsystem):这些是实际执行具体任务的类或模块。它们可能包含多个类和更复杂的逻辑,对于客户端来说,直接与这些子系统交互可能会非常复杂。原创 2024-08-27 09:10:08 · 687 阅读 · 0 评论