简单工厂模式又叫静态工厂方法模式。目的也很简单,就是提供一个创建对象的接口。 在编程中,我们一般遵循“高内聚低耦合”的原则,工厂模式在一定程度上降低了程序间的耦合性,增加了程序的灵活性、可扩展性。 但由于所有实例逻辑都是由工厂类所创建,所以一旦工厂类出现问题,会导致所有客户端都会受到影响,而且每增加一个产品(客户端),工厂类总是很被动,在工厂类中增加相应的业务逻辑,也违背了开闭原则(对扩展开放、对修改封闭)。 简单工厂模式java实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
public class SimpleFactory {
public static void main(String[] args) { try {
Operation operation; operation = OperationFactory.CreateOperation("*"); operation.setNumA(12); operation.setNumB(11); System.out.println(operation.getResult());
} catch (Exception e) { System.out.println(e); } } }
class OperationFactory { public static Operation CreateOperation (String operate) { Operation operation = null; switch(operate) { case "+": operation = new AddOpetarion(); break; case "-": operation = new SubOperation(); break; case "*": operation = new MulOperation(); break; case "/": operation = new DivOperation(); break; } return operation; } }
class Operation { double numA; double numB;
public double getNumA() { return numA; } public void setNumA(double numA) { this.numA = numA; } public double getNumB() { return numB; } public void setNumB(double numB) { this.numB = numB; }
public double getResult(){ return 0; } }
class AddOpetarion extends Operation { @Override public double getResult(){ return numA + numB; } }
class SubOperation extends Operation { @Override public double getResult() { return numA - numB; } }
class MulOperation extends Operation { @Override public double getResult() { return numA * numB; } }
class DivOperation extends Operation { @Override public double getResult() { if(numB==0) try { throw new Exception("除数不能是0"); } catch (Exception e) { e.printStackTrace(); } return numA / numB; } }
|