摘要:
很多时候我们试图发送一个请求的时候,实际上是由代理将我们的请求转发给目标对象,这种代理方式叫做正向代理,正向代理就是客户端的代理,我们知道访问目标的真实地址,而真实目标只知道这次请求是代理发送的却不知道背后的我们;又有些时候,我们输入某url发送一个请求,实际上这个url并非真实服务器,而是服务器的 阅读全文
摘要:
很多时候我们试图发送一个请求的时候,实际上是由代理将我们的请求转发给目标对象,这种代理方式叫做正向代理,正向代理就是客户端的代理,我们知道访问目标的真实地址,而真实目标只知道这次请求是代理发送的却不知道背后的我们;又有些时候,我们输入某url发送一个请求,实际上这个url并非真实服务器,而是服务器的 阅读全文
摘要:
按照单一职责原则,某一个对象只专注于干一件事,而如果要扩展其职能的话,不如想办法分离出一个类来“包装”这个对象,而这个扩展出的类则专注于实现扩展功能。 装饰器模式就可以将新功能动态地附加于现有对象而不改变现有对象的功能。 1.装饰器模式 实际上Java提供的工具包中,IO相关工具就普遍大量使用了装饰 阅读全文
摘要:
假设有这样一个场景:使用一个画图软件画一辆汽车,细节忽略,我们暂且只画汽车的车身、轮胎、底盘三个部分,画完之后进行上色,上色之后再进行矫正。对于画图而言,车身、底盘和轮胎组成一辆汽车,这样的结构很稳定,不会说多出一个翅膀,而不稳当的部分在于汽车的颜色和细节部分,本文要介绍的访问者模式,致力于将“不稳 阅读全文
摘要:
面向对象编程中,对象之间存在着种种关系,比如has-a, has-a关系又叫组合关系,比如公司和部门之间,集体和个人之间等等。公司一般都会有呈树状的组织架构,有时候,希望使用树状结构来表达整体和部分之间的关系,使客户能够不加以区分地处理结构中的每一个对象,这时候就会用到 组合模式。 1.组合模式 组 阅读全文
摘要:
单例模式是开发程序过程中最常见的开发模式之一,很多优秀的框架都是采用单例模式设计的,比如spring容器,默认情况下就是采用单例模式来管理Bean对象的。正是因为单例模式简单而常用,所以很多人开发中会滥用单例模式,一些批评者认为,很多情况下根本没有必要使用单例,而且使用单例模式,就必然会引入一个全局 阅读全文
摘要:
计算器中,我们输入“20 + 10 - 5”,计算器会得出结果25并返回给我们。可你有没有想过计算器是怎样完成四则运算的?或者说,计算器是怎样识别你输入的这串字符串信息,并加以解析,然后执行之,得出结果?这里就引出了今天我想要介绍的一个设计模式 解释器模式。 1.解释器模式 解释器模式(Interp 阅读全文
摘要:
面向对象编程的过程中,经常需要创建对象,如果频繁创建对象特别是使用容器持有对象,那么内存的占用就会越来越高,这对于大型项目来说有时候是致命的。比如对于一篇文档,文档中有文字,而文字是有字体信息、格式信息、颜色信息、位置信息等,显而易见,在面向对象编程中,每个文字被视作一个来处理,那么一篇文档中如果有 阅读全文
摘要:
策略的选择很多时候再开发过程中都会涉及到,比如说排序,有时候需要使用从大到小排序的方案,有时候需要从小到大的排序方案。与其直接在使用时实现排序算法,不如将算法封装起来,这样的话,就可以在程序运行时根据不同场景动态地选择合适的算法了。运行时动态选择方案可以使代码更灵活、复用性高、易于扩展等,策略模式就 阅读全文
摘要:
相信大家和我一样,在实际开发应用过程中,很难看代码中有直接new对象的情况,在一开始,也会被前辈告诫,尽量不要使用new来构造对象,尽量使用工厂方法获取对象云云。但是,我相信很多人和我一样,一开始是一知半解的状态,凭什么不能这样做,用工厂方法获取对象,多此一举吧?但是随着开发经验的逐渐累积,我发现将 阅读全文
摘要:
说到中介大家都不会陌生,买房子租房子有中介,出国留学有中介,买卖二手车还是有中介。那么中介到底是个什么角色呢?实际上,中介就是让买卖双方不必面对面直接交流,由他/她来完成买卖双方的交易,达到解耦买卖人,同时给买卖双方带来方便的一个职业角色。对于应用开发来说,代码就是来源于生活,就是生活的抽象,因此, 阅读全文
|