装饰模式:装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。(百度百科)

这个模式让后期的修改变得极为简单,真的就高内聚低耦合,如果想换装扮或者添加装扮,只需要添加一个类,或者修改一下就能完成。很高程度上提高了效率。

Person类和装饰打扮的代码

package 设计模式.装饰模式;
//定义一个Person类
public class Person {
//    定义私有变量private String name;
//无参构造方法public Person() {}
//有参构造方法public Person(String name) {this.name = name;}
//    定义一个方法public void show(){System.out.println("受害者(装饰者):"+this.name);}
}// 定义一个衣服类
class Clothes extends Person{private Person p;
//打扮方法public void decorate(Person p){this.p = p;}//重写show方法@Overridepublic void show() {
//        等于null的话就是没有穿衣服?if(p != null){p.show();}}
}//具体的装饰方法,下面五个类是一样的(可以根据自己的兴趣进行书写)
class CauClothes1 extends Clothes{
//    重写show方法@Overridepublic void show() {super.show();System.out.println("已装饰跨裤");}
}class CauClothes2 extends Clothes{@Overridepublic void show() {super.show();System.out.println("已装饰动漫T恤");}
}class CauClothes3 extends Clothes{@Overridepublic void show() {super.show();System.out.println("已装饰皮鞋");}
}class CauClothes4 extends Clothes{@Overridepublic void show() {super.show();System.out.println("已装饰女仆装");}
}class CauClothes5 extends Clothes{@Overridepublic void show() {super.show();System.out.println("已装饰高跟鞋");}
}class CauClothes6 extends Clothes {@Overridepublic void show() {super.show();System.out.println("已装饰女仆发饰");}
}

客户端调用代码

package 设计模式.装饰模式;public class Test {public static void main(String[] args) {
//        new一个穿衣服的对象Person p1 = new Person("小菜");
//        这里使用的是多态Clothes c1 = new CauClothes1();Clothes c2 = new CauClothes2();Clothes c3 = new CauClothes3();//调用打扮的这个方法c1.decorate(p1);c2.decorate(c1);c3.decorate(c2);//穿衣效果展示出来c3.show();Person p2 = new Person("大鸟");Clothes c4 = new CauClothes4();Clothes c5 = new CauClothes5();Clothes c6 = new CauClothes6();c4.decorate(p2);c5.decorate(c4);c6.decorate(c5);c6.show();Person p3 = new Person("香风智乃");c5.decorate(p3);c4.decorate(c5);c2.decorate(c4);c6.decorate(c2);c6.show();}
}

以上就是本文的装饰模式啦~~

参考大佬的文章(更加的详细还有uml图),附上链接:https://blog.csdn.net/yixiang1989/article/details/38469931

大话设计模式-装饰模式(大鸟和小菜Java版)相关推荐

  1. 大话设计模式-代理模式(大鸟和小菜Java版)

    代理模式:在代理模式(Proxy Pattern)中,一个类代表另一个类的功能.这种类型的设计模式属于结构型模式. 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口. 以上就是代理模式 ...

  2. 大话设计模式—装饰模式

    装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装原 ...

  3. 大话设计模式——装饰模式

    需求 写一个给人模拟搭配不同服饰的程序,可以给人换各种各样的衣服裤子的形象. 初步实现 需求比较简单,直接上代码: public class Person {private String name;p ...

  4. 大话设计模式装饰模式c++实现

    装饰模式 其他二十三种设计模式 #include<iostream>using namespace std;//装饰模式 //人类 class Person {public:Person( ...

  5. 由浅入深大话设计模式——装饰模式

    今天我们从一个日常每个人都会接触的地方下手--换装,人靠衣服马靠鞍,衣服确实能提升一个人的外表分数(可是我就不会 = =),那如果让你做一个给人搭配不同衣服的系统你会怎么做呢? 下面我们设计一个程序: ...

  6. 大话设计模式-装饰模式

    前言 穿衣打扮是现在的时尚潮流,我们时常刷淘宝来不断满足自己的打扮需求,买个帽子.换条裤子.整双时尚鞋.需求是没有极限的,无止境的购物,只要存在这个平台那么这些装饰性的购物是不可避免的.这在我们软件开 ...

  7. 【大话设计模式】设计模式系统学习大合集

    转载请注明出处:http://blog.csdn.net/column/details/designpatternbylmb.html 为了方便各位网友学习以及方便自己复习之用,将设计模式的系列内容按 ...

  8. 大话设计模式、UML、设计模式Java版完全总结

    此篇博客为阅读大话设计模式后的笔记记录( 读完本文>≈读完<大话设计模式> ),注意是笔记形式,优先适合于对设计模式有一定了解的读者,希望短时间快速温习的读者,同时也对所有设计模式添 ...

  9. 大话设计模式C++版——装饰模式

           女人常说男人喜新厌旧.仅仅见新人笑,那闻旧人哭,但装饰模式(Decorator)却是一种结交新朋友不忘老朋友的设计模式,很适合去古代当老公(现代是不行的.由于仅仅能娶一个老婆了).装饰模 ...

最新文章

  1. R语言ggplot2可视化使用ggridges包可视化山脊图(Ridgeline Plots):山脊图(Ridgeline Plots)应用场景、受试者口服茶碱的之后观察茶碱的浓度变化的山脊图
  2. 2018-03-03-解决win下凭据删除不干净而无法登录共项目录的问题
  3. 【每周NLP论文推荐】 知识图谱重要论文介绍
  4. Python 使用 Scrapy 发送 post 请求的坑
  5. corel产品注册样机安装代码_为你的产品创建一个高逼格的宣传片
  6. 开源协议概谈[转载]
  7. 剑灵服务器延迟时间在哪看,怎么通过任务管理器看剑灵网络延迟
  8. Case Study: 技术和商业的结合点在哪里?
  9. 用计算机弹极乐净土谱,原神琴谱极乐净土分享 曲谱怎么弹奏
  10. cpu使用率100%,内存占用不足30%,system进程 pId=4
  11. 用户画像、用户分群、用户分层,到底有啥区别?
  12. 初等数学复习之一元二次方程的解法
  13. WPF使用Blend
  14. 厦大C语言上机 1357 小明的考题2――数与单词
  15. 再谈宋星博客的留言与seo培训联盟
  16. css样式匹配苹果个型号手机
  17. 标准 BT656 并行 数据结构 详解
  18. QT利用QAxWidget加载IE浏览器控件COM技术
  19. diy 单片机 自动浇花_自动浇花系统的设计及制作 基于Arduino
  20. dae模型如何合并_PV3D学习笔记-导入DAE模型

热门文章

  1. jieba分词库下载
  2. python列表乘以数字,如何将列表中的每个元素乘以数字?
  3. 用ps制作抖音故障风效果教程
  4. 线性回归以及最小二乘法的应用
  5. 材质模块, (未完成...)
  6. 用通俗易懂的语言描述java,如何用通俗易懂的话来形容各种不同的编程语言?...
  7. xhydra使用介绍说明
  8. 工作清闲怎么做兼职挣外快?试试这5个兼职路子
  9. Spinnaker第六节-开发和使用细节
  10. 发挥人工智能潜能,只需要少数人获得的先进技能和专业知识