1. 抽象产品类:计算器
package com.hj.designPattern.factory.simple;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public abstract class Computor{
public abstract int compute(int x,int y);
private int x;
private int y;
}
2. 具体产品类:加法计算器
package com.hj.designPattern.factory.simple;
public class Add extends Computor {
@Override
public int compute() {
return this.getX() + this.getY();
}
}
3. 具体产品类:减法计算器
package com.hj.designPattern.factory.simple;
public class Minus extends Computor {
@Override
public int compute() {
return this.getX() - this.getY();
}
}
4. 产品工厂类:计算器工厂类
package com.hj.designPattern.factory.simple; import lombok.Data; @Data public class ComputorFactory { private String computorType; ComputorFactory(String computorType){ this.computorType = computorType; } public static Computor getComputor(String computorType) throws Exception { switch (computorType) { case "Add": return new Add(); case "Minus": return new Minus(); default: throw new Exception("创建的计算器不存在!"); } } }
5. 测试类
package com.hj.designPattern.factory.simple;
public class FactoryTest {
public static void main(String[] args) throws Exception {
Computor addComputor = ComputorFactory.getComputor("Add");
addComputor.setX(1);
addComputor.setY(2);
System.out.println(addComputor.compute());
Computor minusComputor = ComputorFactory.getComputor("Minus");
minusComputor.setX(4);
minusComputor.setY(9);
System.out.println(minusComputor.compute());
}
}