java设计模式
Jarvis.y
学到老,活到老~~~
展开
-
Spring源码学习笔记:经典设计模式之代理模式
0、代理模式(Proxy Pattern)指为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介作用。属于结构型设计模式。使用目的:保护目标对象增强目标对象代理模式分为静态代理,动态代理:静态代理只能通过手动完成代理操作,如果被代理类增加新的方法,代理类需要同步新增,违背开闭原则。动态代理采用在运行时动态生成代码的方式,取消了对被代理类的扩展限制,遵循开闭原则。若动态代理要对目标类的增强逻辑扩展,结合策略模式,只需要新增策略类便可完成,无需修改代理类的原创 2020-09-21 01:45:34 · 460 阅读 · 0 评论 -
Spring源码学习笔记:经典设计模式之观察者模式
0、观察者模式(Observer Pattern)观察者模式也叫发布订阅模式。定义了对象之间的一对多依赖,让多个观察者对象同时监听一个主体对象,当主体对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新。属于行为型模式。优缺点:优点:1、观察者和被观察者之间建立了一个抽象的耦合。2、观察者模式支持广播通信。缺点:1、观察者之间有过多的细节依赖、提高时间消耗及程序的复杂度。2、使用要得当,要避免循环调用。生活应用场景:微信朋友圈动态通知,知乎邀请答主回答问题,邮件通知,广播通知,桌面原创 2020-09-23 00:24:20 · 331 阅读 · 0 评论 -
Spring源码学习笔记:经典设计模式之装饰者模式
0、装饰者模式(Decorator Pattern)指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原油对象的功能)。属于结构型模式。适用场景:用于扩展一个类的功能或给一个类添加附加职责。动态的给一个对象添加功能,这些功能可以再动态的撤销优缺点:优点:装饰者是继承的有力补充,比继承灵活,不改变原有对象的情况下动态地给一个对象扩展功能,即插即用。通过使用不同装饰类以及这些装饰类的排列组合,可以实现不同效果。装饰者完全遵守开闭原则。缺点:会原创 2020-09-22 00:51:22 · 1217 阅读 · 0 评论 -
Spring源码学习笔记:经典设计模式之原型模式
0、原型模式(Prototype Pattern)指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象原型模式主要适用于以下场景:类初始化消耗资源较多。new 产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)。构造函数比较复杂。循环体中生产大量对象时。在 Spring 中,原型模式应用得非常广泛。例如 scope=“prototype”,在我们经常用的 JSON.parseObject()也是一种原型模式。1、浅克隆一个标准的原型模式代码,应该是这样设计的。先创建原型原创 2020-09-21 01:24:00 · 572 阅读 · 0 评论 -
Spring源码学习笔记:经典设计模式之适配器模式
0、适配器模式(Adapter Pattern)指将一个类的接口转换成客户期望的另外一个接口,使原本的接口不兼容的类可以一起工作。属于结构型设计模式。适用场景:已经存在的类,它的方法和需求不匹配(方法结果相同或相似)的情况。适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案。有点亡羊补牢的感觉。生活中也非常的应用场景,例如电源插转换头、手机充电转换头、显示器转接头。在中国民用电都是 220V 交流电,但我们手机使用的锂电池使用原创 2020-09-20 03:11:56 · 584 阅读 · 0 评论 -
Spring源码学习笔记:经典设计模式之模板模式
0、模板模式 || 模板方法模式(Template Method Pattern)指定义一个算法的骨架,并且允许子类为一个或者多个步骤提供实现方法。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。属于行为型设计模式。适用场景:一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。各子类中公共的行为被提取出来并集中到一个公共的父类中,从而避免代码重复。体现:入职流程:填写入职登记表–>打印简历–>复印学历–>复印身份证–>签订劳动合同–&g原创 2020-09-20 03:04:01 · 401 阅读 · 0 评论 -
Spring源码学习笔记:经典设计模式之策略模式
0、策略模式(Strategy pattern)指定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户可以避免多重分支的if…else…和switch语句。适用场景:假如系统中有很多类,而它们的区别仅仅在于他们的行为不同。一个系统需要动态的在几种算法中选择一种。优缺点:优点:策略模式符合开闭原则。避免使用多重条件转移语句,如 if…else…语句、switch 语句。使用策略模式可以提高算法的保密性和安全性。缺点:客户端必须知道所原创 2020-09-19 02:09:38 · 650 阅读 · 0 评论 -
Spring源码学习笔记:经典设计模式之委派模式
0、委派模式(Delegate Pattern)负责任务的调度和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,而委派模式注重结果。不属于GOF 232种设计模式之一。属于行为型模式。委派模式跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,而委派模式注重结果。委派模式在spring 中应用非常多,最常用的DispatcherServlet 其实就是用到了委派模式。应用场景:当你要实现表现层和业务层之间的松耦合的时候原创 2020-09-19 02:01:15 · 360 阅读 · 0 评论 -
Java软件设计的七大原则
摘抄blog:https://www.cnblogs.com/bert227/p/10897328.htmlhttps://www.cnblogs.com/o-andy-o/p/10315188.html0、七大设计原则开闭原则依赖倒置原则单一职能原则接口隔离原则迪米特原则里氏替换原则合成复用原则1、开闭原则(Open-Closed Preinciple,OCP)定义: 指一个软件实体比如类、模块、函数应该对扩展开放,对修改关闭所谓的开闭,也正是对扩展和修改两个行为的一个.原创 2020-09-13 03:38:17 · 369 阅读 · 0 评论 -
java GoF 的 23 种设计模式的分类和功能
摘抄:http://c.biancheng.net/view/1320.html1、什么是GoF(摘抄自百度词条)《Design Patterns: Elements of Reusable Object-Oriented Software》(即后述《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。这几位作者常被称为"四人组(Gang of Four)",而这本书也就.原创 2020-09-13 20:14:25 · 299 阅读 · 0 评论 -
Spring源码学习笔记:经典设计模式之工厂模式
0、工厂模式(Factory Pattern)工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。工厂模式跟单例模式紧密相关1、简单工厂模式( Simple Factory Pattern)是指由一个工厂对象决定创建出哪一种产品类的实例 属于创建型模式,但它不属于GOF的23种设计模式。简单工厂类负责创建的对象较少,客户端只需要传入工厂类的参数,对于如何创建原创 2020-09-13 21:20:07 · 343 阅读 · 0 评论 -
Spring源码学习笔记:经典设计模式之单例模式
0、单例模式(Singleton Pattern)指确保一个类在任何情况下都绝对只有一个实例,并且提供一个全局访问点,隐藏其所有的构造方法,这种模式属于创建型模式。单例的实现主要是通过以下两个步骤:将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例。在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用。原创 2020-09-16 01:47:24 · 267 阅读 · 0 评论