设计模式
知海漫步
一片汇聚灵感与智慧的天地。在这里,我们从书中经典篇章中汲取灵感,与你分享生活中的点滴感悟。每一篇内容都是对美好世界的深刻洞察,让我们在文字的海洋中遨游,发现更广阔的阅读世界。
展开
-
设计模式-代理模式(Proxy)
代理模式定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。何时使用:想在访问一个类时做一些控制。作用:中介隔离作用开闭原则,增加功能(扩展中介功能)代理模式分类:静态代理动态代理(JDK动态代理、CGLIB动态代理),不在此介绍静态代理优劣:优点:高扩展性缺点:增加代理对象可能会造成...原创 2018-12-16 13:22:10 · 169 阅读 · 0 评论 -
设计模式-外观模式(Facade)
概述:外观模式隐藏了系统的复杂性,并像客户端提供了一个客户端可以访问系统的接口。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用(客户端需要调用一个子系统时通过中间类“门面”来间接调用,门面提供了访问子系统方法的入口方法)。优劣:优点:减少系统相互依赖;提高灵活性;提高安全性;缺点:不符合开闭原则,改东西麻烦,继承重写都不合适;使用场景:为复...原创 2018-12-16 13:35:01 · 185 阅读 · 0 评论 -
设计模式-策略模式(Strategy)
概述:在策略模式中,定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。白话解释:策略模式是对算法的封装,把一系列的算法封装到对应的类中类型:行为类模式优劣:优点:算法可以自由切换;避免使用if else等多重判断;扩展性高;缺点:策略类随着算法的增加会增多;所有策略类都需要对外暴露类图:示例:定义抽象类package test.strategy;/** * 策...原创 2018-12-16 13:33:58 · 237 阅读 · 0 评论 -
设计模式-抽象工厂模式(Factory)
概念:抽象工厂模式是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。在抽象工厂模式中,接口是负责创建一个相关对象的工厂优劣;优点:低耦合,扩展性高缺点:每增加一个产品或产品族或者一个新的工厂,都需要改动若干个类,改动量大类示意图:示例:定义图形接口package test.Factory2;/** * 图形接口 * @author sunlh * */...原创 2018-12-16 13:33:06 · 149 阅读 · 0 评论 -
设计模式-简单工厂模式(Factory)
概念:工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式,它提供了一种创建对象的最佳方式。优劣:优点:调用对象时只需要知道对应对象参数就可以创建;扩展性高;面向接口编程,屏蔽对象的具体实现。缺点:每次增加一个产品,都需要增加一个具体产品类和对应的工厂调用分支,增加了复杂度和具体类的依赖。使用场景:日志记录器,日志分类、日志记录位置都可以通过工厂模式控制;数据库...原创 2018-12-16 13:31:44 · 163 阅读 · 0 评论 -
设计模式-观察者模式2(Observer)
Java内置观察者模式示例在Java中通过Observable类和Observer接口实现了观察者模式。一个或多个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer得到通知,就可以进行相应的工作。package test.observer.java;import java.util.Observable;/** * 被...原创 2018-12-16 13:30:15 · 230 阅读 · 0 评论 -
设计模式-观察者模式1(Observer)
概念:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。使用场景:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。优劣:优点:观察者和被观察者是抽象耦合,松耦合;缺点:被观察者(目标)对象有很多直接或间接的观察者时,通知时间变长;观察者与被观察者相互依赖、通知的话会造成死循环系统崩溃;观察者...原创 2018-12-16 13:29:45 · 231 阅读 · 0 评论 -
设计模式-适配器模式(Adapter)
定义:将一个类的接口转换成客户希望的另外一个接口,作为两个不兼容的接口之间的桥梁优劣:优点:可以让没有关联的两个类在一起运行,提高了类的复用,灵活性好缺点:过多地使用适配器,会让系统非常零乱,系统整体不易把控;由于Java只能继承一个父类地特性,所以至多只能适配一个适配者类,而且目标类必须是抽象类使用场景:修改一个正常运行的系统接口,应该考虑使用适配器模式注意事项:适配器不是在详细设...原创 2018-12-16 13:29:12 · 252 阅读 · 0 评论 -
设计模式-单例模式(Singleton)
单例模式定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供要点:某个类只能有一个实例(类只提供私有的构造函数)它必须自行创建这个实例(类定义中含有一个该类的静态私有对象)它必须自行向整个系统提供这个实例(该类提供了一个静态的公有的函数用于创建或者获取它本身的静态私有对象)构建方式:懒汉方式:指全局的单例实例在第一次被使用时构建饿汉方式:指全局的单例实例在类装载时构建...原创 2018-12-16 13:27:21 · 150 阅读 · 0 评论 -
设计模式-装饰器模式(Decorator)
装饰器模式定义:用于替代继承,无需通过继承增加子类就能扩展对象的新功能。作用:用于包装原有的类,并在保持类方法签名完整性的前提下,提供额外的功能。优劣:优点:装饰类和被装饰类可以独立发展,不会耦合,装饰器模式是继承的一个替代方案,实现动态扩展功能。缺点:多层装饰比较复杂与代理模式区别:装饰器模式是为了增强功能,而代理模式是为了加以控制用代理模式,代理类(prox...原创 2018-12-16 13:24:27 · 203 阅读 · 0 评论 -
设计模式-命令模式(Command)
概念:命令模式是一个高内聚模式。命令模式中,所有的请求都会包装成为一个对象,并传给调用者,调用对象寻找可以处理该命令的对象,并把命令传递给相应的对象,该对象执行命令。类型:行为型设计模式优劣:优点:类间解耦:调用者角色与接收者角色之间没有任何依赖关系(下方例子中调用者实现功能只需调用Command抽象类的execute方法就可以,不需要了解到底是哪个接收者执行的)可扩展性好:Comm...原创 2018-12-17 12:43:53 · 161 阅读 · 0 评论