反射综合案例——举办晚会
说明:通过反射读取配置文件中的信息,动态使用工厂设计模式,在配置文件中创建相应的类对象,并使用对象调用接口中的相应方法实现相应的业务逻辑。显示结果输出、设定设定档、程式码实作如下:
显示结果1
派对开始了.
张学友唱歌的路上有你!
少女时代跳Gee Gee Gee!
赵本山演出销售绑架!
今晚很难玩!
显示结果2
派对开始了.
刘德华的歌爱你一万年!
少女队跳性感广场舞!
刘谦演出大变革买的人!
今晚很难玩!
配置文件
说明:配置文件的路径位于项目的根路径下。请注意包名称cn.i和类名称(例如: LiuDeHua定义)。不要出现错误!
#singable=cn.i.LiuDeHua
#dancable=cn.i.GirlsTeam
#performable=cn.i.LiuQian
Singable=cn.i.ZhangXueYou
Dancable=cn.i.GirlsGeneration
Performable=cn.i.ZhaoBenShan定义了三个接口
角色:在程序中使用接口进行解耦。
Dan电缆
公共接口dancable {
void dance();
}Singable
Public interface Singable {
void sing();
}Performable
Public interface Performable {
void perform();
}定义工厂类
说明:工厂类提供了返回接口以实现类对象的三种方法。工厂类的作用主要是创建调用方需要的对象。在工厂类中创建的对象是通过从配置文件中获取类的授权名称来创建的。修改配置文件中的类时,使用工厂类创建的类也会更改。这就实现了代码的灵活性和高度的程序解耦。
import Java . io . file reader;
import Java . io . io exception;
Import java.u
Public class PartyFactory {
//特性集对象
private static properties prop=new properties();
//静态代码块,加载配置文件信息
静态{
Try {
(new file reader(' '));
} catch (IOException e) {
e . printstacktrace();
}
}
//返回实现Singable类对象的方法
public static singable getsingable()throws exception {
string class name=(' singable ');
班级?cls=Cla(class name);
return(singable)cls . new instance();
}
//返回实现Dancable类对象的方法
public static dancable getdancable()throws exception {
string class name=(' dancable ');
班级?cls=Cla(class name);
return(dancable)cls . new instance();
}
//Performable返回实现类对象的方法
public static performable getperformable()throws exception {
string class name=(' performable ');
班级?cls=Cla(class name);
return(perform able)cls . new instance();
}
}定义特定的接口实现类
张学友(音译)
public class zhanxue you implements singable {
@Override
Public void sing() {
诗(“张学友唱歌途中有你。”);
}
}GirlsGeneration
public class girls generation implements Dan cable {
@Override
Public void dance() {
Sy(“少女时代跳Gee Gee Gee。”);
}
}赵本山
public classzhao Benshan implements performable {
@Override
Public void perform() {
诗(《赵本山演出销售诱拐》);
}
}说明对应:岁接口的实现类完成了!
创建测试类
Public class EveningPartyDemo {
public static void main(string[]args)throws exception {
诗('派对开始了. '));
//歌曲
singable s=Par();
s . sing();
//跳舞
dancable d=Par();
d . dance();
//演出
performable p=Par();
p . perform();
诗(‘忘不了今晚!’);
}
}说明:可执行程序,效果1。
创建三个不同的接口实现类
里约热内卢市
public class liudehua implements singable {
@Override
Public void sing() {
诗(《刘德华的歌我爱你10000年》));
}
}GirlsTeam
public class girls team implements dancable {
@Override
Public void dance() {
诗(“少女队跳性感广场舞”));
}
}女王
public lass liuqin implements performable {
@Override
Public void perform() {
诗(“刘谦演出大变革买的人。”);
}
}说明运行:测试程序,对配置文件的接口实现类进行相应修改,即可查看结果2。
摘要:
在程序中,工厂类简介是程序实现高解耦和可扩展性的最重要基础。工厂类要读取配置文件,必须依赖Java语法的反射机制读取文件的授权类名,使对象动态化,从而执行程序的逻辑任务。因此,我相信通过一个小例子,可以更好地理解反射的使用场景和程序中的重要作用。
1.《【zhangxueyou】[全脂播客上海校区]反思综合案例-举办晚会》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《【zhangxueyou】[全脂播客上海校区]反思综合案例-举办晚会》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/2519961.html