设计模式-工厂模式

工厂模式-计算器的设计

大话设计模式中的代码是C++写的,我用Java将其写出来
并记录工厂模式的思想

-1. 紧耦合和松耦合

1. 使得要改的东西,只需更改要改的地方-----可维护
2. 这些东西并非用完就扔,可以重复使用-----可复用
3. 若要增加字,只需加入即可--------------可扩展
4. 如若要改变样式,只需移动--------------灵活性高

面向对象的好处:
通过封装、继承、多态把程序耦合度降低,使程序更加灵活,容易修改,并且容易复用。

松耦合和紧耦合
比如设计一个计算器-加入加减乘除几个功能,现在再增加一个开平方根的功能,怎么做?如果按照面向过程将需要在函数的参数值上做改动,除非将加减乘除分开,每个功能封装成独立的一个。那么新增加的也是独立的一个。

计算器代码示例如下
运算类:包括加减乘除和其父类,父类中包含两个参数

运算类
package shejimoshi.simplefactory;

public class Operation {
    private double numA=0;
    private double numB = 0;

    public Operation(double numA, double numB) {
        this.numA = numA;
        this.numB = numB;
    }
    public Operation(){}

    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(){
        double result = 0;
        return  result;
    }
}

//加减乘处类
class OperationAdd extends Operation{

    @Override
    public double getResult() {
        double result = 0;
        result = this.getNumA()+this.getNumB();
        return result;
    }
}

//加减乘处类
class OperationSub extends Operation{

    @Override
    public double getResult() {
        double result = 0;
        result = this.getNumA()-this.getNumB();
        return result;
    }
}

//加减乘处类
class OperationMul extends Operation{

    @Override
    public double getResult() {
        double result = 0;
        result = this.getNumA()*this.getNumB();
        return result;
    }
}

//除法类
class OperationDiv extends Operation{

    @Override
    public double getResult() {
        double result = 0;
        if (this.getNumB()==0)
            try {
                throw new Exception("除数不能为0");
            } catch (Exception e) {
                e.printStackTrace();
            }
        result = this.getNumA()/this.getNumB();
        return result;
    }
}

简单工厂类–负责创建对应的运算类的类

可以创建不同的类
package shejimoshi.simplefactory;

public class OperationFactory {

    public Operation opea = null;

    public OperationFactory(Operation opea) {
        this.opea = opea;
    }

    public  Operation createOperate(String operator){



        switch (operator){

            case "+":
                opea = new OperationAdd();
                break;
            case "-":
                opea = new OperationSub();
                break;
            case "*":
                opea = new OperationMul();
                break;
            case "/":
                opea = new OperationDiv();
                break;
        }
        return opea;
    }
}

测试类

直接在其中声明一个创建类的实例,设定值,然后进行计算
package shejimoshi.simplefactory;

/**
 * Created by 96599 on 2019/10/17.
 */
public class Client {


    public static void main(String[] args) {
        Operation opre = new Operation(2,3);


        Operation res = new OperationFactory(opre).createOperate("*");
        res.setNumA(3);
        res.setNumB(4);

        System.out.print(res.getResult());
    }
}

该模式的类结构图为
类结构图
聚合关系:弱拥有,体现的是A可以包含B,但B对象不是A对象的一部分 表示:空心菱形+实线箭头 比如:雁群可以包含大雁,但是大雁不一定是这个雁群的。

合成关系:强拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。 比如 鸟拥有翅膀 表示:实心菱形+箭头

关联关系:表示:实心箭头 当一个类知道另一个类时,可以用关联关系。 比如:企鹅需要了解气候规律。

依赖关系: 虚线箭头。 比如:动物依赖食物和水等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java设计模式是一组经过实践验证的面向对象设计原则和模式,可以帮助开发人员解决常见的软件设计问题。下面是常见的23种设计模式: 1. 创建型模式(Creational Patterns): - 工厂方法模式(Factory Method Pattern) - 抽象工厂模式(Abstract Factory Pattern) - 单例模式(Singleton Pattern) - 原型模式(Prototype Pattern) - 建造者模式(Builder Pattern) 2. 结构型模式(Structural Patterns): - 适配器模式(Adapter Pattern) - 桥接模式(Bridge Pattern) - 组合模式(Composite Pattern) - 装饰器模式(Decorator Pattern) - 外观模式(Facade Pattern) - 享元模式(Flyweight Pattern) - 代理模式(Proxy Pattern) 3. 行为型模式(Behavioral Patterns): - 责任链模式(Chain of Responsibility Pattern) - 命令模式(Command Pattern) - 解释器模式(Interpreter Pattern) - 迭代器模式(Iterator Pattern) - 中介者模式(Mediator Pattern) - 备忘录模式(Memento Pattern) - 观察者模式(Observer Pattern) - 状态模式(State Pattern) - 策略模式(Strategy Pattern) - 模板方法模式(Template Method Pattern) - 访问者模式(Visitor Pattern) 4. 并发型模式(Concurrency Patterns): - 保护性暂停模式(Guarded Suspension Pattern) - 生产者-消费者模式(Producer-Consumer Pattern) - 读写锁模式(Read-Write Lock Pattern) - 信号量模式(Semaphore Pattern) - 线程池模式(Thread Pool Pattern) 这些设计模式可以根据问题的特点和需求来选择使用,它们提供了一些可复用的解决方案,有助于开发高质量、可维护且易于扩展的软件系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值