设计模式 GOF23 提纲

设计模式 GOF23 创建型

设计模式 GOF23 结构型

设计模式 GOF23 行为型

简介

设计模式中很多模式及其相像,本文记录一些常见的,易混淆的设计模式,对他们的目的、作用进行比较,以便更好的理解设计模式。

适配器模式、代理模式

代码及其相似,都是将原本的类包装在新的一个类里面。

类结构:

  • 适配器:AdapteeTarget没有关系,接口方法也完全不同。
  • 代理:NetProxyOutNet是继承或兄弟关系,接口方法一致。

场景:

  • 适配器:一般发生在外来代码(各种第三方),要适应现有环境。
  • 代理:自己开发的功能,需要进行增强。比如:AOP

目的

  • 适配器:更多的是为了适配,为了转变,将原本不适用的接口、方法封装成适应现有框架的接口、方法。
  • 代理:接口本身是适用的,但是需要增强,将现有框架的变成更强的。
// adaptee 为了能在体系中使用,只能在外面包一层 ObjectAdapter
// 原方法 adapteeRequest 被封装为 request
// 封装的目的是转换,而不是加强!
public class ObjectAdapter implements Target{public Adaptee adaptee;public ObjectAdapter(Adaptee adaptee) { this.adaptee = adaptee; }public void request(){System.out.println("ObjectAdapter request begin");adaptee.adapteeRequest();}
}// 代理的原因 更多是增加,而不是转换,原本的类也是能对接的。
public class NetProxy implements BaseNet{public OutNet outnet;@overridepublic void visit(){//通过真实对象,实现访问if (outnet==null){outnet = new OutNet();}outnet.visit();}
}

设计模式 GOF23 模式比较相关推荐

  1. Python设计模式-建造者模式

    Python设计模式-建造者模式 代码基于3.5.2,代码如下; #coding:utf-8 #建造者模式 class Burger():name = ""price = 0.0d ...

  2. Python设计模式-状态模式

    Python设计模式-状态模式 代码基于3.5.2,代码如下; #coding:utf-8 #状态模式class state():def writeProgram(self,work):raise N ...

  3. Python设计模式-备忘录模式

    Python设计模式-备忘录模式 代码基于3.5.2,代码如下; #coding:utf-8 #备忘录模式 import randomclass gameCharacter():vitality = ...

  4. Python设计模式-解释器模式

    Python设计模式-解释器模式 代码基于3.5.2,代码如下; #coding:utf-8 #解释器模式class PlayContext():play_text = Noneclass Expre ...

  5. Python设计模式-命令模式

    Python设计模式-命令模式 代码基于3.5.2,代码如下; #coding:utf-8 #命令模式class barbecuer():def bakeButton(self):print(&quo ...

  6. Python设计模式-策略模式

    Python设计模式-策略模式 代码基于3.5.2,代码如下; #coding:utf-8 #策略模式class sendInterface():def send(self,value):raise ...

  7. Python设计模式-外观模式

    Python设计模式-外观模式 代码基于3.5.2,代码如下; #coding:utf-8 # 外观模式class AlarmSensor:def run(self):print("Alar ...

  8. Python设计模式-桥接模式

    Python设计模式-桥接模式 基于Python3.5.2,代码如下 #coding:utf-8class Shape():name = ""param = "" ...

  9. Python设计模式-代理模式

    Python设计模式-代理模式 基于Python3.5.2,代码如下 #coding:utf-8info_struct = dict() info_struct["addr"] = ...

  10. 说说设计模式~建造者模式(Builder)

    建造者模式是我的"设计模式"里创建型模式里的最后一篇,这种模式在实现中,很多架构都用到了,如MVC,MVP,MVVM,它们都是有建造者模式的精髓的,即,创建与表现分享,我们的MVC ...

最新文章

  1. 如何将Vision Transformer应用在移动端?
  2. binlog工具_基于Binlog实时同步数仓,有哪些不为人知的坑?
  3. 如何使用idea REST Clinet 代替PostMan发送Http请求
  4. 微信小程序request请求动态获取数据
  5. 用于Elasticsearch数据可视化和分析的强大工具
  6. python 人数取整_在python中如何取整到10的最高倍数?
  7. Evaluation or Assessment
  8. 【Java】Java中ThreadLocal简介以及源码
  9. 操作系统——概念、功能、特征及发展分类
  10. 支付宝h5跳转小程序
  11. iTextSharp操作PDF
  12. Neo4j的开发方式
  13. 2021年12月全国程序员薪资出炉,你的排哪里……
  14. cubieboard笔记
  15. 如何优雅地管理微信数据库?
  16. 前端配色方案:最舒服的十种颜色
  17. 弄明白HASH,你就弄明白区块链的一大半
  18. 定时多次自动打开关闭网页的bat脚本
  19. 杭电acm 4540威威猫系列故事——打地鼠
  20. 单机网站服务器,端游【天之炼狱241】单机版一键端网单+GM工具

热门文章

  1. MOOC下载器的文档整理
  2. 利用python在word文档中查找关键字(支持多个文档和多个关键字)
  3. DevCon 5 2019 活动照片
  4. java项目中用到的solr_Solr的原理及在项目中的使用实例.
  5. Chrome谷歌浏览器登入指引
  6. 谷歌浏览器访问网站无法加载验证码图片问题
  7. 《大数据技术原理与应用》(第三章 HDFS 课后答案)
  8. 【初识】汽车诊断协议 UDS / DoIP
  9. 学习银行转账系统-代码摘取csdn
  10. lm算法c语言,lm算法(lm算法原理介绍)