大话设计模式第一讲(简单工厂模式)

一、简单工厂模式

  • 学会使用面向对象的思想进行编程;
  • 使代码容易维护,容易扩展,又容易复用;
面向对象的四大特性
  1. 可维护性:修改时只需要修改需要改的地方;
  2. 可扩展性:若需要添加属性或者方法,只需要加入即可, 不需要修改其他;
  3. 可复用性:这些类各方法,不仅能用于这里,还可以重复地运用于其他地方;
  4. 灵活性好:程序使用起来更加灵活;
面向对象的好处
  1. 通过封装、继承、多态把程序的耦合度降低;
  2. 使用设计模式使得程序更加灵活;
  3. 容易修改,并且易于复用;
用面向对象语言设计四则运算计算器
  1. 业务逻辑的封装
将业务逻辑与界面逻辑分开,让它们之间的耦合度下降,才可以达到容易维护和扩展

public class Operation {//父类
    private static double number1;
    private static double number2;

    public double result() {
        double result = 0;
        return result;
    }

    public double getNumber1() {
        return number1;
    }

    public void setNumber1(double number1) {
        this.number1 = number1;
    }

    public double getNumber2() {
        return number2;
    }

    public void setNumber2(double number2) {
        this.number2 = number2;
    }
}

  1. 加减乘除子类
class AddOperation extends Operation {//子类加法
    @Override
    public double result() {
        double result = getNumber1() + getNumber2();
        return result;
    }
}

class SubOperation extends Operation {// 子类减法
    @Override
    public double result() {
        double result = getNumber1() - getNumber2();
        return result;
    }
}

class MulOperation extends Operation {// 子类乘法
    @Override
    public double result() {
        double result = getNumber1() * getNumber2();
        return result;
    }
}

class DivOperation extends Operation {// 子类除法
    @Override
    public double result() {
        double result = 0;
        try {
            result = getNumber1() / getNumber2();
        } catch (Exception e) {
            System.out.println("除数不能为0!");
        }
        return result;
    }
}

3.简单工厂模式:可以大大降低代码的耦合度

class OperationFactory{//简单工厂模式
    public static Operation newOperation(String operation){
        Operation oper = null;
        switch(operation){
        case "+":
            oper = new AddOperation();
            break;
        case "-":
            oper = new SubOperation();
            break;
        case "*":
            oper = new MulOperation();
            break;
        case "/":
            oper = new DivOperation();
            break;
        }
        return oper;
    }
}
  1. 客户端代码
public static void main(String[] args) {
    Operation oper;
    oper = OperationFactory.newOperation("+");
    number1 = 3;
    number2 = 4;
    double result = oper.result();
    System.out.println(result);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值