设计模式之 工厂模式
2015-08-14 16:16
309 查看
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
现在就算我们添加任意多个子类的时候,工厂类就不需要修改。
2
然后编写主类代码:
【运行结果】:Apple
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package
Reflect;
interface
fruit{
public
abstract
void
eat();
}
class
Apple
implements
fruit{
public
void
eat(){
System.out.println(
"Apple"
);
}
}
class
Orange
implements
fruit{
public
void
eat(){
System.out.println(
"Orange"
);
}
}
class
Factory{
public
static
fruit getInstance(String ClassName){
fruit f=
null
;
try
{
f=(fruit)Class.forName(ClassName).newInstance();
}
catch
(Exception e) {
e.printStackTrace();
}
return
f;
}
}
class
hello{
public
static
void
main(String[] a){
fruit f=Factory.getInstance(
"Reflect.Apple"
);
if
(f!=
null
){
f.eat();
}
}
}
2
apple=Reflect.Apple
orange=Reflect.Orange
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | package Reflect; import java.io.*; import java.util.*; interface fruit{ public abstract void eat(); } class Apple implements fruit{ public void eat(){ System.out.println( "Apple" ); } } class Orange implements fruit{ public void eat(){ System.out.println( "Orange" ); } } //操作属性文件类 class init{ public static Properties getPro() throws FileNotFoundException,IOException{ Properties pro= new Properties(); File f= new File( "fruit.properties" ); if (f.exists()){ pro.load( new FileInputStream(f)); } else { pro.setProperty( "apple" , "Reflect.Apple" ); pro.setProperty( "orange" , "Reflect.Orange" ); pro.store( new FileOutputStream(f), "FRUIT CLASS" ); } return pro; } } class Factory{ public static fruit getInstance(String ClassName){ fruit f= null ; try { f=(fruit)Class.forName(ClassName).newInstance(); } catch (Exception e) { e.printStackTrace(); } return f; } } class hello{ public static void main(String[] a) throws FileNotFoundException,IOException{ Properties pro=init.getPro(); fruit f=Factory.getInstance(pro.getProperty( "apple" )); if (f!= null ){ f.eat(); } } } |
相关文章推荐
- javaweb学习总结(十)——HttpServletRequest对象(一)
- SpringMVC Controller 介绍
- hdu 1848 博弈
- 网贷系统架构——前端框架的选择
- JS 对象(Object)和字符串(String)互转
- HDU 2222
- LayoutInflater作用及使用
- 根据已知的日期获取星期
- 图结构练习——最小生成树
- STM32的USART DMA传输(转)
- UIButton的发现
- Stars(树状数组或线段树)
- hdu 5386 Cover 暴力模拟
- 【Android应用开发技术:基础构建】命令行下的Android应用开发
- Visual Studio 中用管理员权限运行、调试程序
- 如何导入另一个 Git库到现有的Git库并保留提交记录
- 获取本周的周一日期与本周的周日日期
- Stars(树状数组或线段树)
- 通过js动态生成页面表格
- 转载自马哥视频笔记----awk命令的用法