大话设计模式-装饰模式(大鸟和小菜Java版)
装饰模式:装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。(百度百科)
这个模式让后期的修改变得极为简单,真的就高内聚低耦合,如果想换装扮或者添加装扮,只需要添加一个类,或者修改一下就能完成。很高程度上提高了效率。
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版)相关推荐
- 大话设计模式-代理模式(大鸟和小菜Java版)
代理模式:在代理模式(Proxy Pattern)中,一个类代表另一个类的功能.这种类型的设计模式属于结构型模式. 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口. 以上就是代理模式 ...
- 大话设计模式—装饰模式
装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装原 ...
- 大话设计模式——装饰模式
需求 写一个给人模拟搭配不同服饰的程序,可以给人换各种各样的衣服裤子的形象. 初步实现 需求比较简单,直接上代码: public class Person {private String name;p ...
- 大话设计模式装饰模式c++实现
装饰模式 其他二十三种设计模式 #include<iostream>using namespace std;//装饰模式 //人类 class Person {public:Person( ...
- 由浅入深大话设计模式——装饰模式
今天我们从一个日常每个人都会接触的地方下手--换装,人靠衣服马靠鞍,衣服确实能提升一个人的外表分数(可是我就不会 = =),那如果让你做一个给人搭配不同衣服的系统你会怎么做呢? 下面我们设计一个程序: ...
- 大话设计模式-装饰模式
前言 穿衣打扮是现在的时尚潮流,我们时常刷淘宝来不断满足自己的打扮需求,买个帽子.换条裤子.整双时尚鞋.需求是没有极限的,无止境的购物,只要存在这个平台那么这些装饰性的购物是不可避免的.这在我们软件开 ...
- 【大话设计模式】设计模式系统学习大合集
转载请注明出处:http://blog.csdn.net/column/details/designpatternbylmb.html 为了方便各位网友学习以及方便自己复习之用,将设计模式的系列内容按 ...
- 大话设计模式、UML、设计模式Java版完全总结
此篇博客为阅读大话设计模式后的笔记记录( 读完本文>≈读完<大话设计模式> ),注意是笔记形式,优先适合于对设计模式有一定了解的读者,希望短时间快速温习的读者,同时也对所有设计模式添 ...
- 大话设计模式C++版——装饰模式
女人常说男人喜新厌旧.仅仅见新人笑,那闻旧人哭,但装饰模式(Decorator)却是一种结交新朋友不忘老朋友的设计模式,很适合去古代当老公(现代是不行的.由于仅仅能娶一个老婆了).装饰模 ...
最新文章
- R语言ggplot2可视化使用ggridges包可视化山脊图(Ridgeline Plots):山脊图(Ridgeline Plots)应用场景、受试者口服茶碱的之后观察茶碱的浓度变化的山脊图
- 2018-03-03-解决win下凭据删除不干净而无法登录共项目录的问题
- 【每周NLP论文推荐】 知识图谱重要论文介绍
- Python 使用 Scrapy 发送 post 请求的坑
- corel产品注册样机安装代码_为你的产品创建一个高逼格的宣传片
- 开源协议概谈[转载]
- 剑灵服务器延迟时间在哪看,怎么通过任务管理器看剑灵网络延迟
- Case Study: 技术和商业的结合点在哪里?
- 用计算机弹极乐净土谱,原神琴谱极乐净土分享 曲谱怎么弹奏
- cpu使用率100%,内存占用不足30%,system进程 pId=4
- 用户画像、用户分群、用户分层,到底有啥区别?
- 初等数学复习之一元二次方程的解法
- WPF使用Blend
- 厦大C语言上机 1357 小明的考题2――数与单词
- 再谈宋星博客的留言与seo培训联盟
- css样式匹配苹果个型号手机
- 标准 BT656 并行 数据结构 详解
- QT利用QAxWidget加载IE浏览器控件COM技术
- diy 单片机 自动浇花_自动浇花系统的设计及制作 基于Arduino
- dae模型如何合并_PV3D学习笔记-导入DAE模型