美文网首页
设计模式之装饰者模式(23-1)

设计模式之装饰者模式(23-1)

作者: 小超人爱小土豆 | 来源:发表于2019-01-04 16:38 被阅读7次

    简述:

    1. 学习装饰者模式最大的体验是,对于传统类的功能扩展都是通过继承来实现的,但是这种方式耦合度过高。
    2. 而装饰者模式在不改变原有的业务类的前提下,更加灵活的扩展业务。
    3. 类型-结构性

    具体代码如下:

    (1)普通业务实体类

    public class SmallCake extends Cake{
        public String describe(){
            return "一个小蛋糕";
        }
        public int price(){
            return 10;
        }
    }
    

    (2)实体类的抽象

    public abstract class Cake{
        public abstract String describe(){}
        public abstract int price(){}
    }
    

    (3)抽象装饰类 (关键)

    public abstract class DecoratorCake extend Cake{
    
        private Cake cake;
        
        public DecoratorCake(Cake cake){
            this.cake = cake;
        }
        public String describe(){
            return this.cake.describe();
        }
        public int price(){
            return this.cake.price;
        }
    }
    

    (4)具体装饰类

    public class AddChocolates extends DecoratorCake{
        public AddChocolates(Cake cake){
            super(cake);
        }
        public String describe(){
            return super.describe()+"加了巧克力";
        }
        public int price(){
            return super.price+10;
        }
    }
    

    (5)测试

    public class Test{
        public static void main(String [] args){
            Cake cake = new SmallCake();
            cake = new AddChocolates();
        }
    }
    

    相关文章

      网友评论

          本文标题:设计模式之装饰者模式(23-1)

          本文链接:https://www.haomeiwen.com/subject/kxhkrqtx.html