我的java旅程
posts - 30, comments - 45, trackbacks - 0, articles - 0
首页
新随笔
联系
管理
设计模式(2)-------------简单工厂模式(代码实现)
Posted on 2010-05-20 10:26
java小爬虫
阅读(1873)
评论(1)
编辑
收藏
/**
*简单工厂模式其实不是23种设计模式之一,但是它是创建型模式的最基础的内容,
*工厂方法和抽象工厂都是在它的基础上的改良版。
*关于简单工厂模式的优缺点,请看设计模式(1)------工厂类设计模式。
*
*
*它是
对对象实例化的过程和需要实例化的对象进行细节上的封装。
*
*
优点:工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关类。对于客户端来说,去除了与具体产品的依赖。
*
缺点:当需要增加产生一个新对象实例的方法时,需要修改工厂类,这样,工厂类就违背了“开
-
闭原则”。
*
*/
1
package
simpleFactroy;
2
3
public
class
Operation
{
4
private
double
dNumberA;
5
private
double
dNumberB;
6
7
public
double
getResults()
{
8
return
0l
;
9
}
10
11
public
double
getdNumberA()
{
12
return
dNumberA;
13
}
14
15
public
void
setdNumberA(
double
dNumberA)
{
16
this
.dNumberA
=
dNumberA;
17
}
18
19
public
double
getdNumberB()
{
20
return
dNumberB;
21
}
22
23
public
void
setdNumberB(
double
dNumberB)
{
24
this
.dNumberB
=
dNumberB;
25
}
26
27
public
Operation(
double
dNumberA,
double
dNumberB)
{
28
this
.dNumberA
=
dNumberA;
29
this
.dNumberB
=
dNumberB;
30
}
31
32
public
Operation(
double
dNumberA)
{
33
this
.dNumberA
=
dNumberA;
34
}
35
36
public
Operation()
{
37
38
}
39
40
41
}
42
43
44
package
simpleFactroy;
45
46
public
class
OperationAdd
extends
Operation
{
47
public
double
getResults()
{
48
return
getdNumberA()
+
getdNumberB() ;
49
}
50
}
51
52
53
package
simpleFactroy;
54
55
public
class
OperationSub
extends
Operation
{
56
57
public
double
getResults()
{
58
return
getdNumberA()
-
getdNumberB() ;
59
}
60
61
}
62
63
64
65
package
simpleFactroy;
66
67
public
class
OperationSqrt
extends
Operation
{
68
69
@Override
70
public
double
getResults()
{
71
return
Math.sqrt(getdNumberA());
72
}
73
74
75
}
76
77
78
79
package
simpleFactroy;
80
81
public
class
OperationFactroy
{
82
public
static
Operation getOperation(String opr)
{
83
Operation operation
=
null
;
84
if
(opr.equals(
"
+
"
))
{
85
operation
=
new
OperationAdd();
86
}
else
if
(opr.equals(
"
-
"
))
{
87
operation
=
new
OperationSub();
88
}
else
{
89
operation
=
new
OperationSqrt();
90
}
91
return
operation ;
92
}
93
94
}
95
96
97
98
package
simpleFactroy;
99
100
import
java.util.Scanner;
101
102
103
public
class
TestCalculate
{
104
public
static
void
main(String[] args)
throws
Exception
{
105
while
(
true
)
{
106
Scanner src
=
new
Scanner(System.in);
107
double
a
=
src.nextDouble();
108
String operation
=
src.next();
109
double
b
=
src.nextDouble();
110
System.out.println(calculate(a, operation, b));
111
System.out.println(calculate(a));
112
}
113
}
114
115
public
static
double
calculate(
double
a,String operation,
double
b )
{
116
Operation opr
=
OperationFactroy.getOperation(operation);
117
opr.setdNumberA(a);
118
opr.setdNumberB(b);
119
return
opr.getResults();
120
}
121
public
static
double
calculate(
double
a)
{
122
Operation opr
=
OperationFactroy.getOperation(
""
);
123
opr.setdNumberA(a);
124
return
opr.getResults();
125
}
126
127
}
128
Feedback
#
re: 设计模式(2)-------------简单工厂模式(代码实现)
回复
更多评论
2010-05-20 22:27 by
wjmgyn
大话设计 模式看多了。。。。
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
搜索
最新评论
1. re: apache服务器及文件服务器的配置(配置文件记录,不具有可读性)
麻烦你标记一下重要的地方吧
--无量
2. re: apache服务器及文件服务器的配置(配置文件记录,不具有可读性)
@cxh8318
其实就是个存档...
也就是备份,不具有什么价值。
标题和摘要已经写得很明白了!
--java小爬虫
3. re: apache服务器及文件服务器的配置(配置文件记录,不具有可读性)
真不知道想说明什么
--cxh8318
4. re: 胡说八道:代理模式和装饰者模式的异同点比较
其实,它们的着重点一个在于“增加”职责,另一个在于“控制”访问。这是它们最本质的区别。
由此可以看到:学习设计模式重点在于“语义”上把握,而不是追求它的“形式
--bonamana
5. re: 用户权限的解决方案(三)----------URL写入的权限控制
我强烈建议你去学习巴巴运动网视频
--威尔
阅读排行榜
1. apache服务器及文件服务器的配置(配置文件记录,不具有可读性)(5127)
2. DOM4J工具类(以对象的方式增加和删除XML元素)(4754)
3. 用户权限的解决方案(一)----------动态用户权限树的生成(4328)
4. 关于反sql注入和反script注入的解决(3854)
5. 共享关于List的几个常用方法(3808)
6. java面试题:递归方法(3335)
7. 胡说八道:代理模式和装饰者模式的异同点比较(3245)
8. 用户权限的解决方案(三)----------URL写入的权限控制(3026)
9. struts2系列2:Struts2 Action(一)(2878)
10. struts2系列3:Struts2 Action(二)action 获取参数的三种方法(2847)