深度探讨java设计模式
一、单例模式二、简单工厂模式
一、单例模式
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
代码:
public class demo01 {
private static demo01 d
= null;
private demo01(){}
public static demo01
getExample(){
int j
= 1;
if (d
==null){
System
.out
.println("第一次实例化");
System
.out
.println("这个类只能有一次实例化");
d
=new demo01();
}else {
j
=j
+1;
System
.out
.println("这是第j次实例化");
System
.out
.println("此次实例化将默认第一次");
}
return d
;
}
测试
public class Test {
public static void main(String
[] args
) {
demo01 d1
= demo01
.getExample();
demo01 d2
= demo01
.getExample();
System
.out
.println("判断两次实例是否一样"+(d1
==d2
));
}
}
二、简单工厂模式
简单工厂模式(Simple Factory Pattern)因为内部使用静态方法根据不同参数构造不同产品对象实例,也称静态工厂方法模式。
在简单工厂模式中,可以根据参数的不同返回不同实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的
实例通常都具有共同的父类。
class OperationFactory {
public static Operation
createOperate(String operate
){
Operation oper
= null;
switch(operate
){
case "+":
oper
= new OperationAdd();
break;
case "-":
oper
= new OperationSub();
break;
case "*":
oper
= new OperationMul();
break;
case "/":
oper
= new OperationDiv();
break;
}
return oper
;
}
}
public abstract
class Operation {
abstract Integer
getResult(int a
, int b
);
}
class OperationAdd extends Operation {
@Override
Integer
getResult(int a
, int b
) {
return a
+b
;
}
}
class OperationSub extends Operation {
@Override
Integer
getResult(int a
, int b
) {
return a
-b
;
}
}
class OperationMul extends Operation {
@Override
Integer
getResult(int a
, int b
) {
return a
*b
;
}
}
class OperationDiv extends Operation {
@Override
Integer
getResult(int a
, int b
) {
return a
/b
;
}
}
public static void main(String
[] args
) {
Operation oper
= OperationFactory
.createOperate("+");
oper
.getResult(10, 5);
}