设计模式
文章平均质量分 57
在下喵星人
这个作者很懒,什么都没留下…
展开
-
设计模式之模板方法模式
前言 模板方法设计模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构情况下,重新定义算法中的步骤。 一、模板方法设计模式 我们以冲咖啡和茶为例。当我们不使用模板模式的时候我们会定义如下两个类。 public class Coffee { public final void prepareRecipe(){ boilWater(); brew(); pourInCup(); addCond原创 2021-08-22 23:24:12 · 142 阅读 · 0 评论 -
设计模式之装饰器模式
装饰器模式: 动态的将责任附加到对象上。若要扩展功能,装饰器提供了比继承更有弹性的替代方案。 装饰器中有两个比较重要的角色,装饰者和被装饰者。被装饰者实现我们的核心逻辑,装饰者只是对这些逻辑进行增强。比如点一杯饮料,冰,加豆浆等都是装饰者,是对我们饮料的增强,而饮料 是被装饰者。 装饰器模式UML 从UML中可以看到装饰者和被装饰者实现同一接口。装饰者中有一个被装饰者的对象引用。被装饰者的行为增强是通过旧逻辑前后添加新逻辑来实现的。 下面以一个饮料费用计算为例,来简单介绍装饰者模式的使用。购买一杯饮料的时原创 2021-07-26 22:41:43 · 152 阅读 · 0 评论 -
设计模式之单例模式
饿汉模式 有点类加载时便实例化,线程安全。 public class HungrySingleton { private static HungrySingleton hungrySingleton = new HungrySingleton(); private HungrySingleton(){ } public static HungrySingleton getInstance(){ return hungrySingleton; }原创 2021-07-25 22:32:07 · 75 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式将一个类接口,转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。 适配器的例子,现实生活随处可见。比如你只有USB-C接口的耳机,但是你的手机只有TYPE-C接口,这个时候你可能需要一个TYPE-C适配器。 适配器工作起来就如同一个中间人,他将客户所发出的请求转换成原有接口能理解的请求。 定义两个接口类 public interface TYPEProtocol { /** * TYPE-协议 */ void typeProtocol(); }原创 2021-05-04 22:12:01 · 80 阅读 · 0 评论 -
设计模式之代理模式
代理模式主要为其他对象提供一种代理以控制这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用,我们可以在代理类中做一些辅助逻辑,把一些次要逻辑与主分隔逻辑开来,减少重复代码,比如日志记录,事务的管理等等。 #静态代理 既然说到代理,自然联想到静态代理。下面我们就先从简单的开始,下面数据库操作为例,用Java代码实现静态代理。 代理模式中涉及到的角色 抽象角色:为真实对象和代理对象提供一个共同的接口,一般是抽象类或者接口。 代理角色:代理角色原创 2021-05-04 22:09:09 · 66 阅读 · 0 评论 -
设计模式之策略模式
策略模式定义算法族 , 分别封装起来,从而使得它们可以相互替换。策略模式使得算法的变化独立于使用算法的客户端。 分别封装起来, 需要他们实现相同的接口。 因为它们实现相同的接口,所以它们在运行时可以相互替换(子类对象赋给父类引用,这是Java面向对象中的多态,也是设计原则中针对接口编程,而不是针对实现编程。) ***策略模式使得算法的变化独立于使用算法的客户端。***设计原则:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起 策略模式优点(组合优于继承) 使用继承去获得行原创 2021-05-04 22:08:06 · 69 阅读 · 0 评论