8.工厂方法
16lz
2021-04-11
package factoryMethodModel;/** * 工厂方法模式 * * @author LiMing E-mail:1151143484@qq.com * @date 2017年6月14日 上午8:19:28 * * * 简单工厂模式前边已经提到过了:缺点是违背了开放封闭原则(对扩展开放 但是对修改不是封闭的 每次添加新的功能需要修改工厂类) * 工厂方法模式是简单工厂模式的升级 不进具有简单工厂模式的优点 还复合开放封闭原则 因为他是把创建每一类对象都封装成一个工厂 * 这样如果需要添加新的类别 只需要添加新的子类工厂方法就行了 是不需要修改父类工厂方法的(修改封闭) 具体实现看下边 * * 工厂方法唯一的不足就是把逻辑判断放到客户端 后期可以通过反射 对就是反射来简化客户端的操作 * */public class FactoryMethodModel {public static void main(String[] args) {// 使用加法Oprator add = AddFactory.createOprator();add.method();Oprator reduce = ReduceFactory.createOprator();reduce.method();/* * 就在这个时候 想加一个乘法方法 只需要加一个乘法执行方法class Multiplication 和 乘法构造工厂 * 不需要修改任何已存在的类 添加完之后 就可以很方便的用了 */Oprator mltiplication = MultiplicationFactory.createOprator();mltiplication.method();}}/** * 抽象工厂类 */class Factory {public static Oprator createOprator() {return new Oprator();}}/** * 加法类工厂 */class AddFactory extends Factory {public static Oprator createOprator() {return new Add();}}/** * 减法类工厂 */class ReduceFactory extends Factory {public static Oprator createOprator() {return new Reduce();}}/** * 操作父类 */class Oprator {public void method() {System.out.println("父类操作方法");}}/* * 加法类 */class Add extends Oprator {public void method() {System.out.println("执行加法");}}/* * 减法类 */class Reduce extends Oprator {public void method() {System.out.println("执行减法");}}/* * 添加乘法 */// 操作类class Multiplication extends Oprator {public void method() {System.out.println("执行乘法");}}// 工厂类class MultiplicationFactory extends Factory {public static Oprator createOprator() {return new Multiplication();}}
更多相关文章
- 深度学习可以不要乘法,北大、华为诺亚新论文:加法替代,效果不变,延迟
- 流式数据处理在百度数据工厂的应用与实践
- C语言实现乘法口诀表
- 最小二乘法来源(翻译)
- 从作坊到工厂 — 传统企业 DevOps 改造历程
- 矩阵的乘法运算与css的3d变换(transform)
- laravel8 模型工厂数据填充填坑
- 从作坊到工厂:传统企业 DevOps 改造历程
- 特斯拉上海超级工厂监控遭“泄密”,究竟数据该如何“加密”?