设计模式
totfly
这个作者很懒,什么都没留下…
展开
-
15. 委派模式 Delegate Pattern
委派模式 Delegate Pattern模式定义:基本作用就是负责任务的调度和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,而委派模式注重结果。不属于GOF 23种设计模式之一BOSS -> Leader -> EmployeeA 擅长加密-> EmployeeB 擅长架构属于行为型模式典型应用:以Delegate或者dispatcher结尾的类...原创 2021-11-08 10:39:12 · 145 阅读 · 1 评论 -
14. 代理模式
代理模式模式定义:为其他对象提供一种代理,以实现控制对这个对象的访问,代理对象在客户端和目标对象之间起到中介作用。属于结构型设计模式。分为:静态代理 (显示的声明被代理对象,对对象有限制,不符合开闭原则,对象变化了代理类也要变化),动态代理模式(对对象没有限制)目的:保护对象 , 增强对象JDK是采用读取接口的信息(对应用户而言必须有一个接口实现(接口数小于65535),目标类相对较复杂,生成的代理逻辑简单,执行效率相对较低,每次反射动态调用)CGLib时通过覆盖父类方法(可以代理任何一个类,.原创 2021-11-08 10:38:38 · 144 阅读 · 0 评论 -
13. 责任链模式 Chain Of Responsibility
责任链模式 Chain Of Responsibility模式定义:为请求创建了一个接收者对象的链典型应用:jakarta.servlet.Filter jakarta.servlet.FilterChain xxxHandler类优点:请求的发送者和接受者解耦可以控制执行顺序符合开闭原则和单一职责原则责任链 Handler可以定义为一个抽象类,里边包含一个next和process(),setnext()参考:http://c.bianche..原创 2021-11-08 10:38:08 · 164 阅读 · 0 评论 -
12. 观察者模式 Observer
观察者模式 Observer模式定义:定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,他的所有依赖者都会收到通知并更新典型应用:java.util.Observable ApplicationListener优点:符合开闭原则可以在运行时建立对象之间的关系主题对象能够增删和通知观察者(可以定义为接口类,产生多个子类)主题对象需要有一个容器,更新时遍历容器去通知。...原创 2021-11-08 10:37:19 · 101 阅读 · 0 评论 -
11. 模板方法模式 Template Method
模板方法模式 Template Method模式定义:定义一个操作的算法股价,而将一些步骤延迟到子类中。模板方法类使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。最主要的是不能用interface接口类,而是要用AbstractClass抽象类典型应用:在模板类中写一个方法,并编到执行顺序中,子类来实现 jakarta.servlet.http.HttpServlet#service(jakarta.servlet.http.HttpServletRequest, jakarta...原创 2021-11-08 10:35:45 · 63 阅读 · 0 评论 -
10.装饰者模式 Decorator
装饰者模式 Decorator模式定义:在不改变原有对象的基础上,将功能附加到对象上,可以是一个抽象类典型应用:HttpServletRequestWrapper 拓展一个类的功能,或给一个类增加附加职责优点:1. 不改变原有对象的情况下给一个对象扩展功能2. 使用不同的组合可以实现不同的效果3. 符合开闭原则**方法定义成抽象的**可以让子类去具体实现来扩展不一样的功能...原创 2021-11-08 10:35:25 · 71 阅读 · 0 评论 -
9.适配器模式
适配器模式 Adapter模式定义:将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一块工作的那些类可以一起工作,就像手机充电器典型应用:ApplicationListener当希望使用某些现有类,但其接口与其他代码不兼容时,可以使用适配器类当希望重用几个现有的子类,这些子类缺少一些不能添加到超类中的公共功能时,使用该模式优点:符合单一职责原则符合开闭原则对象的适配器(使用组合,需要使用原始对象作为参数构建新对象) 类的适配(使用继承,..原创 2021-11-08 10:34:35 · 86 阅读 · 0 评论 -
8.门面模式
门面模式 Facade(外观模式)模式定义:为子系统中的一组接口提供一个一致的接口,Facade 模式定义了一个高层接口,这个接口使得这一子系统更容易使用典型应用:系统级应用(按钮) requestfacade(拿到数据的是这个类,但处理实在下层的coyote来处理)优点:简化客户端的调用...原创 2021-11-07 18:58:37 · 100 阅读 · 0 评论 -
7.享元模式
享元模式 Flayweight模式定义:运用共享技术有效地支持大量细粒度的对象,所有不同的类对象只创建一次典型应用:游戏中的树,使用***CocurrentHashMap***来保存树的元数据,如果已经存在直接从工厂类中返回已有树,如果没有再在map中增加元数据并返回java.lang.Stringjava.lang.Integercom.sun.org.apache.bcel.internal.generic.InstructionConstants优点:如果系统有大量类似的对象,可以..原创 2021-11-07 18:58:06 · 1913 阅读 · 0 评论 -
6.原型模式
原型模式 Prototype模式定义:指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype典型应用:当代码不应依赖于需要复制的对象的具体类时,请使用原型模式AbstractBeanDefinitionjava.util.Arrays优点:可以不耦合具体类的情况下克隆对象避免重复的初始化代码(直接内存复制,不走类的构建函数,因此单例模式和原型模式是冲突的,使用时要注意)更方便的构建复杂对象,比直接ne..原创 2021-11-07 18:57:39 · 74 阅读 · 0 评论 -
5.建造者模式
建造者模式模式定义:先new一个builder建造者(get/set/build在这个类中实现),然后new一个director指导者(在这个类中指定创建顺序),然后在用指导者按照参数进行创建product典型应用:需要生成的对象具有复杂的内部结构需要生成的对象内部属性本身相互依赖有不可变对象配合使用RequestMappingInfoBeanDefinitionBuilder优点:可以使代码高内聚,product中不用写默认值 1. 建造者独立,易扩展 2.便于控制..原创 2021-11-07 18:57:00 · 146 阅读 · 0 评论 -
3-4.简单工厂模式,工厂模式,抽象工厂模式
工厂方法模式 Factory Method模式定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使得一个类的实例化延迟到子类典型应用:各种factory 1. 当不知道该使用对象的确切类型的时候 2.当希望为库或者框架提供扩展其内部组件的方法时优点:1. 将具体产品和创建者解耦 2.符合单一职责原则 3.符合开闭原则把稳定的部分抽出来形成interface接口或者abstract抽象类,然后在子类中new各自不同的对象new对象是不变的部分时可以使用..原创 2021-11-07 18:56:32 · 76 阅读 · 0 评论 -
2.策略模式
策略模式 strategyjdk1.8之后接口类中才有方法实现,而且是必要要实现comapre方法和eauqls方法重点理解Comparable接口(中需要自己实现compareTo方法,只有一个比较策略)和Comparator接口(才是策略模式,传参中带有new的比较器类对象,比Comparable的优点是可以实现多种比较器对象,实现多种比较策略,例如sort算法实现了这个接口)策略类一般都是interface接口类中默认都是public,也可以使用泛型来定义模式定义:变化当中有稳定的部分,解..原创 2021-11-07 18:55:16 · 85 阅读 · 0 评论 -
1.单例模式
单例模式 singleton参考:https://blog.csdn.net/wayne_lee_lwc/article/details/104228469?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-8.no_search_link&spm=1001.2101.3001.4242.8模式定义:保障一个类只有一个实例,并且提供一个全局访问点(外部不能进行实例化,内部需要实例化一..原创 2021-11-07 18:54:26 · 79 阅读 · 0 评论 -
23种设计模式--解决程序发展过程中的变化,要找到稳定的部分和变化的部分才能引入设计模式
23种设计模式–解决程序发展过程中的变化,要找到稳定的部分和变化的部分才能引入设计模式单例模式 singleton参考:https://blog.csdn.net/wayne_lee_lwc/article/details/104228469?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-8.no_search_link&spm=1001.2101.3001.4242.8模原创 2021-10-24 19:06:30 · 2382 阅读 · 0 评论