1.Java设计模式-->装饰者模式
来源:互联网 发布:新一代人工智能 编辑:程序博客网 时间:2024/06/15 14:06
作为一个Java小白,面向对象编程的几个特性:封装\继承\多态,我一直真正了解的不多.这个模式却让我一下理解了多态的好处:它可以很方便的对系统进行解耦.废话不讲,上代码和注释
1.公共接口
public interface Appearance{ void draw();}
2.基本实现类和一个用作装饰别的Appearance子类的抽象类
//这里列出来两个基本实现类public class Circle implements Appearance{ @override public void draw(){ System.out.println("画个圆形"); }}public class Rectangle implements Appearance{ @override public void draw(){ System.out.println("画个矩形");}
//一个装饰Appearance子类的抽象类public abstract class AppearanceDecorator implements Appearance{ //声明为proteced可以被子类继承 protected Appearance decoratedAppearance; public AppearanceDecorator(Appearance decoratedAppearance){ this.decoratedAppearance = decoratedrAppearance; } @override public void draw(){ decoratedAppearance.draw(); }}
3.装饰的具体实现类
public class RedAppearanceDecorator extends AppearanceDecorator{ public RedAppearanceDecorator(Appearance decoratedAppearance){ super(decoratedAppearance); } private void setRedBorder(){ System.out.println("进行镶边"); System.out.println("done!红色镶边"); } @override public void draw(){ decoratedAppearance.draw(); setRedBorder(); }}
接下来:用测试类来测试一下即可:
public class Test{ public static void(String[] args){ Appearance circle = new Circle(); circle.draw(); Appearance rectangle = new Rectangle(); rectangle.draw(); Appearance redCircle = new RedAppearanceDecorator( new Circle() ); redCircle.draw(); }}
最后,简单一提,学习设计模式一方面是要加深对java体系的理解,另一方面也是增长自己的设计能力.
在Java的io操作中,
BufferedWirter \ OutputStreamWriter 是Writer的子类
其中BufferedWriter就是具体的装饰类.以后,会结合具体的Java或者Andoid源代码进行讲解.
源代码我现在阅读起来还有些费力气,但是最起码要有读源代码的意识,这是开发者必备的技能.
0 0
- 1.Java设计模式-->装饰者模式
- 设计模式-Python Java装饰者模式
- 设计模式-装饰者模式
- Java设计模式-装饰者设计模式
- java设计模式---装饰者设计模式
- Java 装饰者设计模式
- Java设计模式--装饰者
- Java设计模式:装饰者模式(Decorator)
- java设计模式之装饰者模式
- 【Java设计模式】装饰者模式
- Java设计模式之装饰者模式
- JAVA系列-设计模式-装饰者模式
- java设计模式之装饰者模式
- Java 设计模式 装饰者模式
- Java设计模式之装饰者模式
- Java设计模式之装饰者模式
- java设计模式------装饰者模式
- Java设计模式之装饰者模式
- Android什么时候只会调用onPause()而不会调用onStop()完全解析?
- 大型JavaScript应用程序架构设计模式
- 文章标题
- Activiti 多实例与子流程分析
- 布局改变监听事件
- 1.Java设计模式-->装饰者模式
- 监控PostgreSQL数据库活动
- js 字符串转换成数字的三种方法
- 分割字符串
- 什么是C++虚函数、虚函数的作用和使用方法
- 最近一周工作问题总结
- Jmeter基础之---jmeter基础概念
- 预防httpClient连接数满的方法
- OpenSearch:轻松构建大数据搜索服务