Android基础-java的装饰模式
2013-08-16 15:28
211 查看
什么是装饰模式:
按我的理解,装饰模式就相当于装潢,买了一个房子,里面有厨房,厕所,客厅等等,但是它们可能并不完全,比如说,客厅缺少沙发,厨房缺少餐具,装潢就是要将它们补全。而装饰模式就是相当于装潢,写代码不可能面面俱到,总有遗漏,去修改一个类,不如去添加一个新类,去补充。
如何制造一个装饰模式:
首先,我们需要一个接口,就像这样:
既然有了接口,我们就得去实现它,像这样:
接下要做的就是,再新建一个类,像这样:
按我的理解,装饰模式就相当于装潢,买了一个房子,里面有厨房,厕所,客厅等等,但是它们可能并不完全,比如说,客厅缺少沙发,厨房缺少餐具,装潢就是要将它们补全。而装饰模式就是相当于装潢,写代码不可能面面俱到,总有遗漏,去修改一个类,不如去添加一个新类,去补充。
如何制造一个装饰模式:
首先,我们需要一个接口,就像这样:
public interface Person { void dosomething(); }
既然有了接口,我们就得去实现它,像这样:
public class Teacher implements Person { @Override public void dosomething() { // TODO Auto-generated method stub System.out.println("我会教书"); } }按照正常思路,到这里,我们就应该写我们的主类,然后通过主类中的main函数new一个Teacher,然后调用Teacher中dosomething函数输出打印。但是,很显然,很多时候,我们需要的信息远远不止这些,如此程序中,我们不仅想知道这个老师会教书,还想知道他来自哪个学校。当然,在Teacher中直接添加打印输入在本程序中十分简单,但是如果程序很大,需要修改的内容很多,或者是Teacher类不允许我们修改,该怎么办,这里就需要用到装饰模式。
接下要做的就是,再新建一个类,像这样:
public class DecoratorTeacher implements Person { private Person p; //精髓在这里 public DecoratorTeacher(Person p) { //主函数可以new一个该类的对象,并传入,传入的自然是Person接口的子类,可以向上转型成Person类 this.p = p; } @Override public void dosomething() { // TODO Auto-generated method stub System.out.println("我是XX大学的老师"); p.dosomething(); //然后,这里的p就是传入的子类了,虽然它的类型是Person类,但并没影响该子类里的内容 } }
public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Teacher teacher = new Teacher(); DecoratorTeacher dt = new DecoratorTeacher(teacher); dt.dosomething(); } }
相关文章推荐
- Java基础 - IO流之字符流,FileReader,FileWriter,BufferedReader,BufferedWriter,装饰设计模式,编码表
- java基础47 装饰着模式设计
- 15.Java基础:设计模式----->装饰模式
- java基础之泛型和装饰模式
- 黑马程序员——学习Java基础之 io LineNumberReader 之装饰设计模式
- 用人类的思维方式去写更容易维护的代码——用<抽象-基础-逻辑>模式开发Java(Android)程序
- 黑马程序员:Java基础总结----装饰设计模式
- android 框架之基础装饰设计模式
- Java基础之IO流,装饰设计模式的应用之行号、缓冲读取文本文件
- Android 内功心法(1.9)——java设计模式之装饰模式
- Java基础-IO流4 装饰设计模式
- 最全Android面试题大集合(Android、Java、计算机基础、设计模式)持续更新
- Java基础---Java---IO流-----BufferedReader、BufferedWriter、缓冲区、装饰设计模式及和继承的区别
- java基础 IO/线程/GUI,装饰模式
- 黑马程序员_Java基础_装饰设计模式
- 源自老毕Java基础教程--装饰设计模式
- JAVA基础——装饰设计模式
- Java基础-装饰设计模式、装饰与继承的区别
- Java基础知识IO流(装饰设计模式)
- Java_基础—装饰设计模式