北京行——java基础加强反射之晚会案例

晚会案例

在设计时为了提高程序的灵活性,以及扩展性,以及对程序的低耦合度,更重要的一点是小的框架模型

首先解决业务流程

EveningParty

package cn.binbin;

public class EveningParty {
    public static void main(String[] args) throws Exception {
        new EveningParty().start();
    }

    private void start() throws Exception {
        System.out.println("晚会开始......");
        Sing sing = null;// 写到这的时候就是干什么,怎么干就去找工厂去做
        sing = Factory.sing();
        sing.sing();
        Dance dance = null;
        Perform perform = null;
        System.out.println("晚会结束 ......");
    }
}

这个是整个业务的流程

下面是工厂类,用来分离干什么和怎么干

Factory

package cn.binbin;

import java.util.ResourceBundle;

public class Factory {
    // 在加载配置文件这个块出现了卡壳,由工厂来提供具体的歌手、表演、舞蹈

    public static Sing sing() throws Exception {
        String className = ResourceBundle.getBundle("party").getString("Sing");// 这个配置文件要位于src目录下
        Sing sing = (Sing) Class.forName(className).newInstance();
        return sing;
    }

    public static Dance dance() {
        return new Xiaohudui();
    }

    public static Perform perform() {
        return new Zhaobensan();
    }

}

如何体现代码良好的扩展性呢,这里用到了面向接口编程

这里用到三个总体逻辑业务的接口

Sing Dance Perform 定义了方法 只不过在子类中各自实现了相应的方法

package cn.binbin;

public interface Dance {
    public void dance();
}

package cn.binbin;

public interface Perform {
    public void perform();
}

package cn.binbin;

public interface Sing {
    public void sing();
}

为了良好的扩充性,下面是类的实现

package cn.binbin;

public class Liudehua implements Sing {

    @Override
    public void sing() {
        // TODO Auto-generated method stub
        System.out.println("刘德华的冰雨");
    }

}

package cn.binbin;

public class Zhaobensan implements Perform {

    @Override
    public void perform() {
        // TODO Auto-generated method stub
        System.out.println("赵本山的卖拐");
    }

}

package cn.binbin;

public class Xiaohudui implements Dance {

    @Override
    public void dance() {
        // TODO Auto-generated method stub
        System.out.println("小虎队的霹雳舞");
    }

}

总结:通过这个小程序,我们能够应用反射让程序能够有比较大的灵活性,而且操作方便,也体现了一个小框架的原理(这个地方时我现在对框架的理解,不知道对不对哦,以后学习到框架后若有变化就回来再改正)

 

posted @ 2013-04-16 17:59  蓝冰悠见  阅读(140)  评论(0编辑  收藏  举报