八、装饰者模式(静态代理)

装饰者模式(静态代理)

我们需要对一个方法进行增强时有以下办法

1.继承
2.装饰者模式(静态代理)

3.动态代理

 

一、装饰者模式:

使用步骤:
1.装饰者和被装饰者实现同一个接口或者继承同一个类
2.装饰者中要有被装饰者的引用
3.对需要增强的方法进行加强

4.对不需要加强的方法调用原来方法

二、代码实现

 接口:

package com.one;


//车接口
public interface Car {
// 跑的方法
void run();


// 停的方法
void stop();
}

原方法:

package com.one;


public class Bus implements Car {


@Override
public void run() {

System.out.println("公交车正常的跑");
}


@Override
public void stop() {

System.out.println("公交车正常的停");
}


}

增强方法:

package com.one;


public class StrBus implements Car {


private Car car;


// 将被装饰者的引用传 进来进行装饰成装饰者
public StrBus(Car car) {
this.car = car;
}


@Override
public void run() {
// 对需要进行加强的 方法进行加强
System.out.println("加强版的公交车快速的跑");
}


@Override
public void stop() {
// 不需要加强的方法调用原来的方法
car.stop();
}

 

}

三、图示:

 

备注:由于个人原因,本博客暂停更新。如有问题可联系本人,本人提供技术指导、学习方向、学习路线。本人微信wlp1156107728(添加注明来意)   QQ1156107728(添加注明来意)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
静态代理装饰者模式和动态代理都是面向对象编程中的常见设计模式,它们都是用于实现对象间的协作和交互。下面举例说明它们的区别: 1. 静态代理 静态代理是指在编译时就已经确定了代理类和被代理类的关系,代理类在程序运行之前就已经存在。代理类和被代理类都要实现同一个接口或者继承同一个父类,代理类中持有被代理类的实例,通过调用被代理类的方法来实现对被代理类的调用。静态代理的优点是可以在代理类中添加额外的功能,而代理类和被代理类之间的关系在编译时就已经确定,比较稳定。 举例:比如在一个电商网站上,用户下单后需要支付,可以使用静态代理模式,将支付功能封装到一个代理类中,代理类中可以添加一些额外的功能,比如记录日志、发送短信等。 2. 装饰者模式 装饰者模式是指在不改变原有对象的基础上,通过对其进行包装(装饰),来扩展其功能。装饰者模式中有一个抽象组件和多个具体组件,抽象组件定义了被装饰对象的接口,具体组件是被装饰的对象。装饰者可以动态地添加、删除或替换被装饰对象的行为。 举例:比如在一个咖啡店中,原本只有一杯普通的咖啡,但是顾客可以根据自己的喜好选择添加奶油、糖、巧克力等,这些都是装饰者,可以动态地添加、删除或替换。 3. 动态代理 动态代理是指在程序运行时动态地生成代理类,不需要在编译时确定代理类和被代理类的关系,代理类在程序运行时才生成。动态代理需要借助Java的反射机制实现,通过代理类的invoke()方法来调用被代理类的方法。动态代理的优点是可以在运行时动态地生成代理类,比较灵活。 举例:比如在一个WEB应用中,需要根据用户的请求动态地生成不同的代理类,来处理不同的请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值