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