zoukankan      html  css  js  c++  java
  • 设计模式之【装饰者--Decorator】

    1、接口

    1 package Decorator;
    2 
    3 public interface Sourceable {
    4     public void method();
    5 
    6 }

    2、接口实现类--被装饰者

     1 package Decorator;
     2 
     3 public class Source implements Sourceable{
     4 
     5     @Override
     6     public void method() {
     7         // TODO Auto-generated method stub
     8         System.out.println("接口原始方法的实现");
     9     }
    10 
    11 }

    3、装饰类

     1 package Decorator;
     2 
     3 //装饰类,在原有类的基础上通过接口添加新方法
     4 public class Decorator implements Sourceable{
     5     private Sourceable source;
     6     
     7     public Decorator(Sourceable source){
     8         super();    //调用父类构造方法
     9         this.source = source;
    10     }
    11     
    12     @Override
    13     public void method() {
    14         // TODO Auto-generated method stub
    15         System.out.println("装饰前");
    16         source.method();
    17         System.out.println("装饰后");
    18     }
    19 
    20 }

    4、实现扩展

     1 package Decorator;
     2 
     3 public class DecoratorTest {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         Sourceable    source = new Source();
     8         Sourceable    obj = new Decorator(source);
     9         obj.method();
    10     }
    11 
    12 }

    5、结果

    装饰前
    接口原始方法的实现
    装饰后

    装饰器模式的应用场景:

    1、需要扩展一个类的功能。

    2、动态的为一个对象增加功能,而且还能动态撤销。(继承不能做到这一点,继承的功能是静态的,不能动态增删。)

    缺点:产生过多相似的对象,不易排错!

  • 相关阅读:
    20款最优秀的JavaScript编辑器
    清空windows系统网络配置
    如何禁止Chrome浏览器隐藏URL的WWW前缀
    EDK2开发环境搭建
    edk2中子目录介绍
    INTEL_BIOS 编译—for-ATOM_E3800
    英特尔vPro博锐技术激活
    gitea configure
    mpeg1、mpeg2和mpeg4标准对比分析和总结
    内置缓存
  • 原文地址:https://www.cnblogs.com/pingzhanga/p/4674008.html
Copyright © 2011-2022 走看看