A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 常文艺 于 2011-11-24 12:09 编辑

跪求11111111111  装饰设计模式很厉害的样子。不要举视频里的例子啦。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

4 个回复

倒序浏览
你说的是FIleFilter吧??
回复 使用道具 举报
梁锡伟 发表于 2011-11-23 23:10
你说的是FIleFilter吧??

还没看到
回复 使用道具 举报
常文艺 发表于 2011-11-23 23:16
还没看到

记错了。。。应该是Filterinputstream Filterreader 等等
回复 使用道具 举报
看一下这个吧,看完基本上就懂了

新建一个抽象汽车父类:
package car_package;
public abstract class car_parent {
    // 汽车抽象父类
    private String make_address;
    private int speed;
    public String getMake_address() {
        return make_address;
    }
    public void setMake_address(String make_address) {
        this.make_address = make_address;
    }
    public int getSpeed() {
        return speed;
    }
    public void setSpeed(int speed) {
        this.speed = speed;
    }
    public abstract void print_face();
}





然后新建一个奥迪汽车子类



package car_package;
public class audi_sub extends car_parent {
    // 奥迪汽车子类
    @Override
    public void print_face() {
        System.out.println("audi车默认的颜色为 黑色");
    }
}





然后再新建一个装饰者父类:



package decorator_package;
import car_package.car_parent;
public abstract class decorator_parent extends car_parent {
    // 装饰者父类
    protected car_parent car_parent_ref;
    public void setCar_parent_ref(car_parent car_parent_ref) {
        this.car_parent_ref = car_parent_ref;
    }
    @Override
    public void print_face() {
        car_parent_ref.print_face();
    }
}





然后再新建装饰者子类:红色火焰装饰者类:

package decorator_package;
public class decorator_audi_red extends decorator_parent {
    @Override
    public void print_face() {
        super.print_face();
        System.out.println("给 奥迪 喷涂鸦 - 颜色为 红色火焰");
    }
}





然后再新建装饰者子类:紫色霞光装饰者类:



package decorator_package;
public class decorator_audi_purple extends decorator_parent {
    @Override
    public void print_face() {
        super.print_face();
        System.out.println("给 奥迪 喷涂鸦 - 颜色为 紫色霞光");
    }
}





新建一个运行类



package main_run;

import car_package.audi_sub;
import decorator_package.decorator_audi_purple;
import decorator_package.decorator_audi_red;

public class main_run {

    public static void main(String[] args) {

        audi_sub audi_sub_ref = new audi_sub();
        audi_sub_ref.setMake_address("北京市朝阳区");
        audi_sub_ref.setSpeed(200);

        decorator_audi_red decorator_audi_red_ref = new decorator_audi_red();
        decorator_audi_red_ref.setCar_parent_ref(audi_sub_ref);

        decorator_audi_purple decorator_audi_purple_ref = new decorator_audi_purple();
        decorator_audi_purple_ref.setCar_parent_ref(decorator_audi_red_ref);

        decorator_audi_purple_ref.print_face();
    }
}



程序运行结果如下:



audi车默认的颜色为 黑色
给 奥迪 喷涂鸦 - 颜色为 红色火焰
给 奥迪 喷涂鸦 - 颜色为 紫色霞光

    audi车默认的颜色为 黑色
给 奥迪 喷涂鸦 - 颜色为 红色火焰
给 奥迪 喷涂鸦 - 颜色为 紫色霞光

评分

参与人数 1技术分 +2 收起 理由
admin + 2 辛苦了

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马