结构型设计模式-装饰模式

来源:互联网 发布:邢帅教育 知乎 编辑:程序博客网 时间:2024/05/16 23:36

什么是装饰模式

装饰模式动态地给一个对象添加一些额外的职责,就增加功能来说,它比生成子类更灵活。也可以这样说,装饰模式把复杂类中的核心职责和装饰功能区分开了,这样既简化了复杂类,有去除了相关类中重复的装饰逻辑。 装饰模式没有通过继承原有类来扩展功能,但却达到了一样的目的,而且比继承更加灵活,所以可以说装饰模式是继承关系的一种替代方案。

实现装饰模式

interface Animal {        public void bark();    }    class Dog implements Animal {        @Override        public void bark() {            // TODO Auto-generated method stub            System.out.println("汪汪汪!");        }    }    abstract class Human implements Animal {        private final Animal inside;        public Human(Animal inside) {            this.inside = inside;        }        @Override        public void bark() {            // TODO Auto-generated method stub            inside.bark();        }        public abstract void speak();    }    class Man extends Human {        public Man(Animal inside) {            super(inside);        }        @Override        public void speak() {            // TODO Auto-generated method stub            System.out.println("I'm human ~");        }    }
0 0