常用设计模式
- 常用设计模式介绍
- 设计模式的分类
- 工厂模式
- 工厂模式
- 1.场景介绍
- 案例代码
- 参考链接
常用设计模式介绍
设计模式的分类
创建型模式(Creational):关注对象的实例化过程,包括了如何实例化对象、隐藏对象的创建细节等。常见的创建型模式有单例模式、工厂模式、抽象工厂模式等。
结构型模式(Structural):关注对象之间的组合方式,以达到构建更大结构的目标。这些模式帮助你定义对象之间的关系,从而实现更大的结构。常见的结构型模式有适配器模式、装饰器模式、代理模式等。
行为型模式(Behavioral):关注对象之间的通信方式,以及如何合作共同完成任务。这些模式涉及到对象之间的交互、责任分配等。常见的行为型模式有观察者模式、策略模式、命令模式等。
工厂模式
工厂模式
1.场景介绍
设计一个运算方法,可以运算两个数的加减乘除等运算
思维:页面与业务分离开,加减乘除独立,方便后续有其他算法加入时不受影响
案例代码
1.运算类
package org.example.model.factory;public class Compute {private int numA;private int numB;public int getNumA() {return numA;}public void setNumA(int numA) {this.numA = numA;}public int getNumB() {return numB;}public void setNumB(int numB) {this.numB = numB;}public int getResult(int numA,int numB){return 0;}
}
2.加法类
package org.example.model.factory;public class OperaAdd extends Compute{@Overridepublic int getResult(int numA,int numB) {return numA + numB;}
}
3.减法类
package org.example.model.factory;public class OperaReduce extends Compute{@Overridepublic int getResult(int numA,int numB) {return numA - numB;}
}
4.乘法类
package org.example.model.factory;public class OperaMul extends Compute{@Overridepublic int getResult(int numA,int numB) {return numA * numB;}
}
5.除法类
package org.example.model.factory;public class OperaDiv extends Compute{@Overridepublic int getResult(int numA,int numB) {if (numB != 0){return numA / numB;}else {throw new RuntimeException("除数不能为0");}}
}
6.工厂类
package org.example.model.factory;public class OperaFactory {public static Compute createCompute(String opera){Compute c = null;switch (opera){case "+":c = new OperaAdd();break;case "-":c = new OperaReduce();break;case "*":c = new OperaMul();break;case "/":c = new OperaDiv();break;}return c;}
}
7.测试
package org.example.model.factory;public class TestDemo {public static void main(String[] args) {Compute c = OperaFactory.createCompute("+");int result = c.getResult(3,8);System.out.println(result);}
}
8.输出结果
参考链接
参考书籍:《大话设计模式》
参考博客:
Java开发者必备:23种设计模式全面解析
23种设计模式(Java版,超详细!)