一.简单工厂模式
算法接口:
public interface Operator {
double getResult(double a, double b);
}
具体算法加:
public class Add implements Operator{
public double getResult(double a, double b) {
return a + b;
}
}
具体算法减:
public class Mul implements Operator {
public double getResult(double a, double b) {
return a - b;
}
}
工厂类:
public class CalculateFactory {
public static Operator createOperation(char name){
Operator operator = null;
switch (name){
case '+' :
operator = new Add();
break;
case '-' :
operator = new Mul();
break;
}
return operator;
}
}
客户端:
public class Main {
public static void main(String[] args) {
Operator operator = CalculateFactory.createOperation('+');
Double result = operator.getResult(2, 3);
System.out.println(result);
}
}
二.工厂方法模式:当我们在工厂类中创建对象的时候,如果条件很复杂,或者在算法中增加了一种新的算法,势必会对工厂类进行修改,违背了开放封闭原则,这个时候就有了工厂方法模式。
算法接口:
public interface Operator {
double getResult(double a, double b);
}
具体算法加:
public class Add implements Operator{
public double getResult(double a, double b) {
return a + b;
}
}
具体算法减:
public class Mul implements Operator {
public double getResult(double a, double b) {
return a - b;
}
}
工厂接口
public interface Factory {
Operator createOperation();
}
创建加法对象的类:
public class AddFactory implements Factory{
public Operator createOperation() {
System.out.println("增加很多加法的业务");
return new Add();
}
}
创建减法对象的类:
public class MulFactory implements Factory{
public Operator createOperation() {
System.out.println("增加很多减法的业务");
return new Mul();
}
}
通过反射,获取算法对象
public class Main {
public static void main(String[] args) {
try{
AddFactory addFactory = (AddFactory)Class.forName("com.netposa.function.factory.AddFactory").newInstance();
MulFactory mulFactory = (MulFactory)Class.forName("com.netposa.function.factory.MulFactory").newInstance();
Operator add = addFactory.createOperation();
Operator mul = mulFactory.createOperation();
add.getResult(1, 2);
mul.getResult(3, 2);
}catch (Exception e){
e.printStackTrace();
}
}
}
三.抽象工厂模式
java设计模式-工厂模式
最新推荐文章于 2024-04-20 16:25:45 发布