专栏首页代码人生大话设计模式笔记(五)——代理模式和工厂方法模式

大话设计模式笔记(五)——代理模式和工厂方法模式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/luo4105/article/details/76549282

这两个模式都很简单,就合并一起,简单说一下。

第七章代理模式

代理模式是用代理类来代理实现类进行操作。

在代理类的方法中调用真实的实现方法。

UML图如下

第八章工厂方法模式

简单工厂的工厂类中的增加一个工厂类就要修改工厂类的判断,违背了open-close原则。工厂方法模式是对简单方法的工厂类做一个抽象处理。

它将工厂类抽象成工厂接口,并对每一个产品类创建一个与之对应的具体工厂类。

在本书的雷锋例子中

工厂模式

工厂方法模式

工厂方法模式的调用

LeifengFactoryleifengFactory = new GraduateFactory();
Leifeng leifeng =leifengFactory.createLeifeng();
leifeng.buyOil();
leifeng.buyRice();
leifeng.washClosthes();
leifeng.cleanFloor();

总结

工厂方法模式是对工厂模式的一个改进,在工厂模式中,增加一个工厂实现类就需要修改工厂类的创建对象方法,这里违法了open-close的设计原则。工厂方法模式是对工厂类的创建方法进行抽象,抽象成工厂接口和多个工厂实现类。增加工厂类时,需要增加工厂实现类,修改客户端调用代码,这样极大的减少了逻辑处理部分修改的数量,更符合open-close的设计原则,但是添加一个工厂类需要增加对应工厂实现类,过程更加复杂。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • NIO系列(二)——Channel通道复制和Selector选择器

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    逝兮诚
  • log4j配置和使用

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    逝兮诚
  • springMVC系列(一)——简介

    Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架。是服务到工作者模式的实现。

    逝兮诚
  • 23种设计模式之工厂方法模式

    定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类. 工厂方法使一个类的实例化延迟到其子类

    烟草的香味
  • TypeScript 设计模式之抽象工厂

    在现实生活中,工厂是负责生产产品的,比如牛奶、面包或礼物等,这些产品满足了我们日常的生理需求。

    阿宝哥
  • 设计模式(四):从“兵工厂”中探索简单工厂、工厂方法和抽象工厂模式

    前面陆陆续续的更新了三篇关于设计模式的博客,是关于“策略模式”、“观察者模式”、“装饰者模式”的,今天这篇博客就从“兵工厂”中来探索一下“工厂模式”(Facto...

    lizelu
  • Python设计模式(2):工厂方法模式

    为了克服简单工厂方法模式的缺点,人们试图改善工厂类的结构。导致简单工厂方法模式不符合开闭原则的原因是工厂方法类只是一个实类,每当有一个新的产品类被加入到产品类的...

    不可言诉的深渊
  • 三分钟理解“工厂模式”——设计模式轻松掌握

    举个例子 假设需要我们写一个简单的计算器,能实现加减乘除运算,仅要求输入两个数,选择运算符,计算出结果就行了。 使用简单工厂模式的设计如下: ? 工厂类提供了一...

    大闲人柴毛毛
  • 工厂模式,从第三方登录说起

    现在的很多平台在登陆的时候,下面都会有一排选项,可以选择微信、QQ、微博账号等登陆,这些账号对平台来说都是第三方账号。第三方账号登陆是最近几年流行起来的,第三方...

    平头哥的技术博文
  • 工厂方法模式 创建型 设计模式(三)

    核心的工厂角色,不再是具体的工厂,也就是不再负责所有具体产品的创建,进一步转变为抽象角色。

    noteless

扫码关注云+社区

领取腾讯云代金券