第1章《简单工厂模式》

前端之家收集整理的这篇文章主要介绍了第1章《简单工厂模式》前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

增加实例化的对象,这些都是容易变化的地方,所以适合用一个工厂来做决策。

内容才是工厂模式的原理,但是c的实现,需要a和b已经实现的情况下才可以使用。

功能时:

内容即可,其它类不会涉及任何更改;

增加某个可以通过工厂来实例化的业务,则需要做两处修改

功能。

增加实例化这个类的代码

包括的7个类:

代码

获取操作结果的虚方法

/**

  • @Author: cxh
  • @CreateTime: 17/12/31 17:53
  • @ProjectName: JavaBaseTest
    */
    public class Client {
    //客户端代码
    public static void main(String[] args) {
    //定义一种操作
    Operation ope=OperationFactory.createOperation("+");
    //定义两个操作数
    ope.setFirst(11);
    ope.setSecond(22);
    //输出计算结果
    System.out.println(ope.getResult());
    }
    }

(2)Operation

/**

  • @Author: cxh

  • @CreateTime: 17/12/31 17:51

  • @ProjectName: JavaBaseTest
    */
    public class Operation {
    private int first;
    private int second;

    //get and set
    public int getFirst() {
    return first;
    }

    public void setFirst(int first) {
    this.first = first;
    }

    public int getSecond() {
    return second;
    }

    public void setSecond(int second) {
    this.second = second;
    }

    //求运算结果
    public int getResult(){
    return 0;
    }
    }

/**

  • @Author: cxh

  • @CreateTime: 17/12/31 17:57

  • @ProjectName: JavaBaseTest
    */
    public class OperationAdd extends Operation {

    @Override
    public int getResult(){
    return super.getFirst()+super.getSecond();
    }

    @Override
    public void setFirst(int first) {
    super.setFirst(first);
    }
    @Override
    public void setSecond(int second) {
    super.setSecond(second);
    }
    }

/**

  • @Author: cxh

  • @CreateTime: 17/12/31 18:04

  • @ProjectName: JavaBaseTest
    */
    public class OperationSubs extends Operation {

    @Override
    public int getResult() {
    return super.getFirst()-super.getSecond();
    }

    @Override
    public void setFirst(int first) {
    super.setFirst(first);
    }

    @Override
    public void setSecond(int second) {
    super.setSecond(second);
    }
    }

/**

  • @Author: cxh

  • @CreateTime: 17/12/31 18:16

  • @ProjectName: JavaBaseTest
    */
    public class OperationMul extends Operation {

    @Override
    public int getResult() {
    return super.getFirst()*super.getSecond();
    }

    @Override
    public void setFirst(int first) {
    super.setFirst(first);
    }

    @Override
    public void setSecond(int second) {
    super.setSecond(second);
    }
    }

/**

  • @Author: cxh

  • @CreateTime: 17/12/31 18:28

  • @ProjectName: JavaBaseTest
    */
    public class OperationDevide extends Operation {
    @Override
    public int getResult() {
    try{
    return super.getFirst()/super.getSecond();
    }catch (Exception e){
    System.out.println("错误信息列表:"+e);
    return -1;
    }
    }

    @Override
    public void setFirst(int first) {
    super.setFirst(first);
    }

    @Override
    public void setSecond(int second) {
    super.setSecond(second);
    }
    }

/**

  • @Author: cxh
  • @CreateTime: 17/12/31 17:50
  • @ProjectName: JavaBaseTest
    /
    public class OperationFactory {
    public static Operation createOperation(String s){
    switch (s){
    case "+":
    return new OperationAdd();
    case "-":
    return new OperationSubs();
    case "
    ":
    return new OperationMul();
    case "/":
    return new OperationDevide();
    }
    return null;
    }
    }

输出结果:33

猜你在找的设计模式相关文章