美文网首页设计模式
Java设计模式---装饰器模式

Java设计模式---装饰器模式

作者: 小白彡 | 来源:发表于2020-03-27 20:50 被阅读0次

    记录一下装饰器模式
    举个栗子


    c9805b65b64f890ab291c454143f10b6.jpeg

    装饰器模式,模式如其名,就像女生们出门都喜欢打扮得漂漂亮亮的,而这些穿在身上的,戴在头上的,涂在脸上的都是一种装饰。 装饰要有一个主体就是这个女生,东西都是用来装饰她的,而且有顺序,先涂个口红,再画个眉毛。。。。只要可以装饰的,都可以随时拿来加在身上。

    下面用代码来实现一下:

    先定义一个人的基接口:

    public interface BaseMan {
        //出门
        String goOut();
    }
    

    这个人有一个出门的方法。
    下面来一个女人实现人这个接口。

    public class WoMan implements BaseMan {
    
        @Override
        public String goOut() {
            return "出门了";
        }
    }
    
          BaseMan woMan = new WoMan();
    
            System.out.println(woMan.goOut());
    
    QQ截图20200327204328.png

    现在女人调用方法就直接出门了,连衣服都没穿。。。。。这可不行。
    所以我们先给这个女生装饰一下
    先定义装饰器的一个基类:

    public  abstract  class BaseDecoration implements BaseMan {
    }
    
    

    再来个衣服的装饰器继承它:

    public class ClothesDecoration extends BaseDecoration {
    
        private BaseMan baseMan;
    
        public ClothesDecoration(BaseMan baseMan){
            this.baseMan = baseMan;
        }
    
        @Override
        public String goOut() {
            return baseMan.goOut() + "穿上了衣服,";
        }
    }
    

    这个装饰器传进来一个主体,就是这个女生,然后在她出门之前对她进行装饰。

    照这个再来个裤子的装饰器:

    public class PantsDecoration extends BaseDecoration {
    
        private BaseMan baseMan;
    
        public PantsDecoration(BaseMan baseMan){
            this.baseMan = baseMan;
        }
    
        @Override
        public String goOut() {
            return baseMan.goOut() + "穿上了裤子,";
        }
    }
    

    现在我们可以让女生出门了:

    BaseMan woMan = new WoMan();
            BaseMan woMan1 = new ClothesDecoration(woMan);
            BaseMan woMan2 = new PantsDecoration(woMan1);
            System.out.println(woMan2.goOut());
    
    QQ截图20200327204739.png

    现在这个女生出门前,就穿上了衣服裤子,当然如果还需要其他的装饰,还可以继续添加。。

    这样装饰就可以在不改变原有东西的基础上,动态灵活的添加自己想要得东西。。这就是装饰器的优点了。

    相关文章

      网友评论

        本文标题:Java设计模式---装饰器模式

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