时间:2021-05-19
装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。
优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
缺点:多层装饰比较复杂。
实例:给一个人配置穿衣
1:代码结构图
2:创建一个person类( ConcreteComponent)
package DecoratorModel;/** * 2017-10-9 10:39:09 * 装饰器设计模式 * Person 类 ConcreteComponent * @author 我不是张英俊 * */public class Person { public Person(){} private String name; public Person(String name){ this.name=name; } public void Show(){ System.out.println("装扮的"+name); }}3:服饰类
package DecoratorModel;/** *服饰类(Decorator) * @author 我不是张英俊 * */public class Finery extends Person{ protected Person component; //打扮 public void Decorate(Person component){ this.component=component; } public void Show(){ if(component!=null){ component.Show(); } }}4:具体服饰类
public class Tshirts extends Finery { public void Show(){ System.out.println("大T恤"); super.Show(); }}public class BigTrouser extends Finery { public void Show(){ System.out.println("垮裤"); super.Show(); }}public class Sneakers extends Finery { public void Show(){ System.out.println("破球鞋"); super.Show(); }}public class Suit extends Finery { public void Show(){ System.out.println("西装"); super.Show(); }}public class Tie extends Finery { public void Show(){ System.out.println("领带"); super.Show(); }}public class LeatherShoes extends Finery { public void Show(){ System.out.println("皮鞋"); super.Show(); }}5:测试类
public class test { public static void main(String[] args) { Person xc=new Person("旺财"); Sneakers pqx=new Sneakers(); BigTrouser kk=new BigTrouser(); Tshirts dtx=new Tshirts(); pqx.Decorate(xc); kk.Decorate(pqx); dtx.Decorate(kk); dtx.Show(); }}6:控制台
大T恤
垮裤
破球鞋
装扮的旺财
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
接着上篇文章,我们继续来学习Java中的字节流操作。装饰者缓冲流BufferedInput/OutputStream装饰者流其实是基于一种设计模式「装饰者模式」
本文实例讲述了java设计模式之装饰模式原理与用法。分享给大家供大家参考,具体如下:装饰模式能在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它
本文实例讲述了PHP设计模式之装饰器模式定义与用法。分享给大家供大家参考,具体如下:什么是装饰器模式作为一种结构型模式,装饰器(Decorator)模式就是对一
学设计模式中有个装饰模式,用java实现起来不是很难,但是远远没有python简单,难怪越来越火了!这里就简单讨论下python的几种装饰模式:一无参装饰器:#
本文实例讲述了Java设计模式之代理模式与装饰模式。分享给大家供大家参考,具体如下:之所以把这两种模式放在一起说,是因为我发现这了两种模式几乎一模一样!从网上也