13 大雨将至

尚未进行身份认证

我要认证

后知后觉, 也许不算晚

等级
TA的排名 5k+

Spring中的设计模式

1 简单工厂模式用途 BeanFactory简单来说就是让工厂给我生产一个类,具体生产的是哪个子类实例,我并不不关心User user = (User) beanFactory.getBean("user");2 工厂方法模式用途 FactoryBean简单工厂模式是让工厂生产一个类,而工厂方法模式需要先建造一个工厂,然后用它来生产自己需要的类。class User...

2020-03-03 21:20:37

写一个RPC框架弄懂Dubbo原理

首先看图我们希望在客户端中调用接口EchoService的echo方法,但是客户端项目并没有加入实现类EchoServiceImpl的依赖,接口甚至无法实例化,更别提调用方法了。那么第一步先解决客户端中接口实例化的问题...

2020-03-02 14:03:30

重温设计模式之中介者模式

中介者模式 Mediator Pattern用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。生活中我们经常会需要中介,比如租房找房产中介要比自己找要方便的多。再如订外卖,如果没有外卖平台,就要保存很多的外卖菜单,即使这样也会因为消息不及时而错过一些新店开业的优惠。而对餐馆来说,想加几样新菜要么是等别人订餐...

2019-11-02 16:38:52

重温设计模式之命令模式

命令模式 Command Pattern将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。小明的西餐店正式开业了,为了提高点餐体验和效率,他凭借程序员的经验,引入设计模式来设计点餐流程。这次,用到的是命令模式。看图:命令模式的优点是降低请求者(Waiter)和接收者(Chef)的耦合度,服务员知道菜单就可以了,...

2019-10-29 19:48:15

重温设计模式之备忘录模式

备忘录模式 Memento Pattern在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。小明开披萨外卖店攒了一点钱,开始动心想开一家真正的西餐厅,不过这是一笔大投资,弄不好会赔掉全部积蓄,还要搭上时间。如果人生失败后能重来就好了。正在纠结的时候,忽然天上来了一位仙人,对他说:孩子,你尽管大胆的去尝试吧,如果失败了,我来帮你回到现在。嗯,让我先保...

2019-10-24 23:07:41

重温设计模式之桥接模式

桥接模式 Bridge Pattern将抽象部分与实现部分分离,使它们都可以独立的变化。小明的披萨外卖店生意越来越好,制作披萨的速度已经赶不上订单的速度,小明决定买几台自动披萨机来代替人工。一番考察后,M品牌的披萨机和符合小明的需求。它有制作不同口味的多种机器,每种机器都可以更换大中小三种烤箱,分别烤出12寸、9寸和6寸的披萨。以后如果有新口味的要求,再买一台新披萨机就可以,原来的...

2019-10-24 19:44:39

重温设计模式之状态模式

状态模式 State Pattern允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。在生产流水线上,每个岗位的工人完成自己的步骤后,产品状态发生变化,工人会交给下一环节处理。如果用代码来描述一条披萨生产流水线,可以用状态模式。Pizza类为Context角色,它封装了客户端感兴趣的处理和查看状态接口,并将与状态相关的操作委托给当前状态对象(Cook)来处理。...

2019-10-23 22:58:16

重温设计模式之模板方法模式

模板方法模式 Template Pattern定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。回到小明的披萨店。见建造者模式经营一段时间后,小明开始思考如何降低人力成本,他意识到,如果能够通过规则保证每个步骤的正确执行,就不需要额外的监督员;而且制作披萨的加芝士和烘焙步骤,两种披萨是一样的,是否可以考虑合...

2019-10-21 10:53:17

重温设计模式之适配器模式

适配器模式 Adapter Pattern将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。中国的标准电压是220V,但是很多国家如美国、日本是110V,去这些国家旅行时为了能给手机等设备充电,需要准备一个转换器,把110V电压转换为220V电压,这就是一种适配器模式。那么在外观模式中提到的万能读卡器算不算适配器模式呢?...

2019-10-20 12:01:28

重温设计模式之组合模式

组合模式 Composite Pattern将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式用于构建树形结构,如文件目录、组织关系等。关键代码是继承父类并且包含一个父类的集合。UML图:代码:import java.util.ArrayList;import java.util.List;publ...

2019-10-19 20:38:58

重温设计模式之代理模式

代理模式 Proxy Pattern为其他对象提供一种代理以控制对这个对象的访问。在部署Web应用时,通常都会使用Nginx作为反向代理,这种模式下,在浏览器看来把HTTP请求发给Nginx和Tomcat得到的结果是相同的。UML图:代码:public interface WebServer { String getHttp();}public clas...

2019-10-17 20:44:38

重温设计模式之外观模式

外观模式 或称门面模式Facade Pattern为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。万能读卡器是一个外观模式在生活中的应用。便携存储卡有SD卡、CF卡、TF卡等多种类型,想让电脑支持所有的卡类型,需要预设一排各种各样的接口。使用万能读卡器后,只要设置USB接口就可以了。如果用代码来描述这一过程,就是标准的...

2019-10-17 20:05:05

重温设计模式之原型模式

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。如果玩过魔兽争霸3都知道剑圣有一个技能叫镜像,分裂出两个和自身属性一样的假剑圣,只是没有攻击力。考虑一下创建假剑圣的过程,剑圣有等级、力量、敏捷、智力等可变属性,如果用new的方式创建,则需要把每个属性重新设置一遍。BladeMaster fake1 = new BladeMaster();fake1.setLeve...

2019-10-16 18:21:09

重温设计模式之观察者模式

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。需求:在用户上线时,有各种各样的事情要处理:发一封欢迎信、增加登录积分、查询未读邮件数做提示、提醒修改密码,并且随时会增加新的需求或者删除过时功能。UML图:代码:public class LoginEvent extends EventObject { pub...

2019-10-15 21:07:34

重温设计模式之建造者模式

将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。看做外卖生意赚钱容易,小明也开了一家披萨外卖店。做披萨通常需要制作面饼、加馅料、加调味酱、加芝士和烘焙5个步骤,为了提高效率,小明组建了“披萨流水线”,每条流水线5个人,分别负责5个步骤;两组流水线分别制作水果披萨和海鲜披萨。为了协调流水线的生成,保证每个步骤都被执行到位,小明又聘请了专门的监督员来监督整个制作过程。...

2019-10-14 20:32:34

重温设计模式之策略模式

定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。假设需求是做数组排序,但是需求方并没有想好用哪种算法,为了应对自如,我们先写好冒泡、归并和快速三种算法,并且通过设计模式让客户端可以随意替换。UML图:代码:public interface Sorter { void sort(int[] numbers);}public class B...

2019-10-13 18:25:52

重温设计模式之装饰(器)模式

动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。以用滤镜处理图片的行为模式为例,其特点是:1 滤镜有多种且可持续增加新类型2 用户加滤镜的顺序是随机的3 每次加滤镜需要叠加之前滤镜的效果如果用装饰模式来表现,那么UML图是:代码:public interface Picture { void show();}pub...

2019-10-12 10:20:41

重温设计模式之单例模式

保证一个类仅有一个实例,并提供一个访问它的全局访问点。UML图:实现代码:懒汉式public class LazySingleton { private static LazySingleton instance; private static Object lock = new Object(); private LazySingleton()...

2019-10-11 20:49:14

重温设计模式之抽象工厂模式

在使用工厂方法模式时,如果工厂很多,那么在变更子类类型时就要修改多个工厂,复杂且容易出错。一个解决办法就是使用抽象工厂模式,建造一个生产工厂的工厂。抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。UML图:代码:public interface EmployeeDao { Employee selectById(int id);}...

2019-10-09 18:32:52

重温设计模式之工厂(方法)模式

在简单工厂模式中,当增加新的实体对象时,需要修改工厂类的switch代码块,容易出错,违反开放-封闭原则。针对于此,可以改成为每个实体对象创建一个工厂类,即为工厂(方法)模式。UML图:代码:public interface EmployeeDao { Employee selectById(int id);}public class EmployeeDao...

2019-10-08 14:21:52

查看更多

勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。