zoukankan      html  css  js  c++  java
  • java 装饰者模式

    一、概念

    我们在使用以前既定的类或者使用别人使用的类的时候,如果该类的方法,不满足你的需求的时候,需要你进行额外附加功能的时候,往往我们想到的方法是继承实现,

    但是继承会导致类的越来越庞大,有什么好的方法呢?装饰者模式(也称静态代理)。

    就是在不破坏原类的结构的基础上,对现有类附件额外功能。

    条件:

            1 )继承同一个类或者实现同一个接口。

             2)装饰者要有被装饰者的引用。

             3)需要增强的方法,对其增强,不需要增强的方法调用原先的方法。

    例子:

    共同继承的接口:

     1 package com.jd.dec;
     2 
     3 /**
     4  * 1)接口不能实例化。
     5  * 2)接口没有构造方法。
     6  * 3)接口所有的方法都是抽象方法。
     7  * 4)接口没有成员变量只有final和static。
     8  * 5)接口的方法没有方法体。
     9  * 6)接口不是被类继承而是被类实现。
    10  * 7)接口可以实现多继承。
    11  */
    12 public interface Car {
    13       void  run();
    14       void  stop();
    15 }

     被装饰者:

     1 package com.jd.dec;
     2 
     3 public class qq  implements  Car{
     4     public  void run(){
     5         System.out.println("正在行驶");
     6     };
     7     public  void  stop(){
     8         System.out.println("停车");
     9     };
    10 
    11 }

    装饰者:

     1 package com.jd.dec;
     2 
     3 public class binli implements  Car {
     4     private Car car;
     5     public binli(Car car){
     6         this.car=car;
     7     }//对被装饰者的引用,注意这里不写qq而是写的是Car 是指对一类的Car进行增强而不是单单qq。
     8     public  void  run(){
     9         System.out.println("提速200");//需要增强的方法
    10     };
    11     public  void  stop(){
    12         this.car.stop();
    13     };
    14 }

    这样我可以直接调用 新类的binli对象就可以,加强原先的car类的职责。

  • 相关阅读:
    go函数和方法
    Golang的“面向对象”
    高性能 socket 框架
    wpf 自定义圆形按钮
    WPF 实际国际化多语言界面
    使用过滤器对mvc api接口安全加密
    使用mvc3实现ajax跨域
    WPF,给颜色SolidColorBrush添加动画
    C# 通用验证类 支持 WPF,MVC,Winform
    WSL安装ubuntu搭建vue开发环境(三):docker安装
  • 原文地址:https://www.cnblogs.com/evilliu/p/8515768.html
Copyright © 2011-2022 走看看