
设计模式
蛋焊工
搬砖小学生
展开
-
设计模式-6大原则
1.开闭原则 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简单来说:就是为了使程序的扩展性好,易于维护和升级。 ???? 2.接口隔离原则 这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。在开发过程当中回尽量地去降低依赖,降低耦合。 ???? 3.迪米特法则 一个实体应当尽量少的与其他实体之间发生原创 2021-08-11 20:57:21 · 121 阅读 · 0 评论 -
设计模式之模板设计(Template)
模版模式,又被称为模版方法模式,它可以将工作流程进行封装,并且对外提供了个性化的控制,但主流程外界不能修改,也就是说,模版方法模式中,将工作的主体架构规定好,具体类可以根据自己的需要,各自去实现,这可能会让我们想到策略模式,两者有着本质的区别。 模版方法模式的应用场景 1、主流程相同,多个类区别在于主流程中的某个细节不同 2、客户可以自已实现模版里的抽象方法 3、对客户隐藏具体的实现流程(...原创 2019-01-15 17:35:34 · 228 阅读 · 0 评论 -
设计模式之装饰模式(Decorator)
装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下: 核心接口: public interface Sourceable { public void method(); } ...原创 2019-01-28 11:07:22 · 168 阅读 · 0 评论 -
设计模式之适配器模式(Adapter)
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 Source:需要被适配的类、接口、对象,即Datas。 Destination:需要得到的类,Source通过适配得到的类对象,也就是我们期待得到的借口。 Adapter:适配器类,协调Source和Destination...原创 2019-01-28 16:07:20 · 152 阅读 · 0 评论 -
设计模式之单例设计模式(Singleton)
单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。 许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 基本的实现思路 单例模式要求类能够有返回对象...原创 2019-02-12 14:12:00 · 174 阅读 · 0 评论 -
设计模式之策略设计模式(Strategy)
定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。 这个模式涉及到三个角色: ● 环境(Context)角色:持有一个Strategy的引用。 ● 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。 ● 具体策略(ConcreteStrategy)角...原创 2019-02-12 17:30:29 · 3710 阅读 · 0 评论 -
设计模式之代理设计模式(Proxy)之 (1)静态代理
代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展。 比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing()。 public class Singer{ public void sing(){ System.out.println("唱一首歌"); } } 假如你希望,在唱歌前后还...原创 2019-03-28 14:17:29 · 232 阅读 · 0 评论 -
设计模式之代理设计模式(Proxy)之 (2)动态代理(JDK)
动态代理:在实现阶段不用关心代理类的具体实现,而是在运行时才生成代理对象(JAVA中是通过反射实现,具体见下文)平台或者三方库有提供。动态代理的扩展性更高,所以一般一些开源框架都会使用。 /* * 接口 */ public interface ISinger { void sing(); } /** * 目标对象Singer1 实现了某一接口 */ public class ...原创 2019-03-28 14:56:06 · 178 阅读 · 0 评论 -
设计模式之代理设计模式(Proxy)之 (3)动态代理(CGLIB)
cglib代理 前提条件: 需要引入cglib的jar文件,由于Spring的核心包中已经包括了Cglib功能,所以也可以直接引入spring-core-xxx.jar 目标类不能为final 目标对象的方法如果为final/static,那么就不会被拦截,即不会执行目标对象额外的业务方法 /* * 接口 */ public interface ISinger { void si...原创 2019-03-28 16:43:09 · 663 阅读 · 0 评论