• 技术文章 >Java >java教程

    Java之装饰模式学习

    黄舟黄舟2017-10-13 10:19:25原创1116
    这篇文章主要为大家详细介绍了java设计模式学习之装饰模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。

    优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。

    缺点:多层装饰比较复杂。

    实例:给一个人配置穿衣

    1:代码结构图

    php入门到就业线上直播课:进入学习

    2:创建一个person类( ConcreteComponent)


    package DecoratorModel;
    
    /**
     * 2017-10-9 10:39:09
     * 装饰器设计模式
     * Person 类 ConcreteComponent
     * @author 我不是张英俊
     *
     */
    public class Person {
    
      public Person(){}
      
      private String name;
      public Person(String name){
        this.name=name;
      }
      
      public void Show(){
        System.out.println("装扮的"+name);
      }
    }

    3:服饰类


    package DecoratorModel;
    
    /**
     *服饰类(Decorator)
     * @author 我不是张英俊
     *
     */
    public class Finery extends Person{
    
      protected Person component;
      //打扮
      public void Decorate(Person component){
        this.component=component;
      }
      
      public void Show(){
        if(component!=null){
          component.Show();
        }
      }
    }

    4:具体服饰类


    public class Tshirts extends Finery {
      public void Show(){
        System.out.println("大T恤");
        super.Show();
        }
    }
    
    public class BigTrouser extends Finery {
      public void Show(){
        System.out.println("垮裤");
        super.Show();
      }
    }
    
    public class Sneakers extends Finery {
      public void Show(){
        System.out.println("破球鞋");
        super.Show();
        }
    }
    
    public class Suit extends Finery {
      public void Show(){
        System.out.println("西装");
        super.Show();
      }
    }
    
    public class Tie extends Finery {
      public void Show(){
        System.out.println("领带");
        super.Show();
      }
    }
    
    public class LeatherShoes extends Finery {
      public void Show(){
        System.out.println("皮鞋");
        super.Show();
      }
    }

    5:测试类


    public class test {
    
      public static void main(String[] args) {
        Person xc=new Person("旺财");    
        Sneakers pqx=new Sneakers();
        BigTrouser kk=new BigTrouser();
        Tshirts dtx=new Tshirts();
        pqx.Decorate(xc);
        kk.Decorate(pqx);
        dtx.Decorate(kk);
        dtx.Show();
      }
    
    }

    6:控制台

    大T恤
    垮裤
    破球鞋
    装扮的旺财

    以上就是Java之装饰模式学习的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:Java 学习 装饰
    上一篇:Java虚拟机四种优化对内部锁的方式解析 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• Java数据结构之单链表与OJ题• 详细介绍Java正则表达式之单字符匹配和预定义字符• Java总结分享之反射、枚举、Lambda表达式• 实例详解Java顺序表和链表• 一文搞懂Java线程池实现原理
    1/1

    PHP中文网