一、单例模式
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
代码:
// An highlighted block
/**
* 第一种:单例模式
*/
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));
}
}
//结果:第一次实例化
//这个类只能有一次实例化
//这是第j次实例化
//此次实例化将默认第一次
//判断两次实例是否一样true
二、简单工厂模式
简单工厂模式(Simple Factory Pattern)因为内部使用静态方法根据不同参数构造不同产品对象实例,也称静态工厂方法模式。
在简单工厂模式中,可以根据参数的不同返回不同实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的
实例通常都具有共同的父类。
/**
* 操作工厂类
* @author spring
*/
class OperationFactory {
/**
*
* @param operate 根据传进来的操作符,选择实例化响应的对象
* @return
*/
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;
}
}
/**
* 操作抽象类,各种算数操作需要继承此类,并实现getResult方法
*/
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);
}