
设计模式
云哥Y
技术源于实践,技术改变世界!
展开
-
设计模式之观察者模式(主题对象发生变化,通知各个观察者)
当涉及到电商场景时,观察者模式可以用于处理多种情况,比如订单状态更新、库存变化、用户积分变化等。下面是一个简化的订单状态更新的观察者模式案例。5.接下来,创建两个具体的观察者类,分别处理订单状态的更新。6.最后,在主应用程序中使用这些类。4.然后,实现具体的订单主题类。2.然后,定义一个观察者接口。3.接下来,定义订单状态枚举。1.首先,定义一个主题接口。原创 2023-12-06 15:11:24 · 362 阅读 · 0 评论 -
jdk动态代理源码分析之自定义实现
疑问在jdk动态代理中,还是以买房子举例:张三需要买房子,然后房产中介帮助张三找好的房源,但是实际上真正搜索到房源的是电脑,然后电脑返回一系列房源信息。我们可以这么去理解,电脑是我们新生成的代理类,那么它到底是如何一步一步演变而来的呢? 我们要怎么查看动态代理类? try {//直接用流从jvm内存中写出来 byte[] bytes=ProxyGenera...原创 2018-04-27 20:37:16 · 215 阅读 · 0 评论 -
设计模式之观察者模式(行为型,做了一个动作,然后通知大家)
介绍标准定义: (Observer Pattern)当对象间存在一对多关系时,则使用观察者模式。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 通俗理解1:一般存在一对多的关系,如:老师在讲台上讲课,下面的同学在认真听讲。这时老师突然问同学们牛顿第一定律是什么,然后下面的同学认真的在思考,这就是一个观察者模式。老师是目标对象,同学们都是观察者。 通俗理解2:...原创 2018-05-04 23:44:07 · 307 阅读 · 0 评论 -
设计模式之装饰器模式(结构型,需要包装,但不改变本质)
介绍标准定义:装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 通俗理解:为了某个实现类,在不修改原始类的基础上进行动态的覆盖或增加方法实现类要保持跟原有类的层级关系。(在sprin...原创 2018-05-03 21:59:56 · 502 阅读 · 0 评论 -
设计模式之代理模式(结构型,办事要求人,所以找代理)
介绍应用: AOP实现、拦截器、房产中介、黄牛、媒婆、解耦、专人做专事、自己不想做但又不得不做的事。静态代理概念:静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同的父类。总之,在代理之前,所有东西都是已知的(人工)。 场景:大家都知道我们程序员找对象比较困难,因为我们比较宅,性格内向。张三是一名程序员,年龄接近30了却还没找对象。于是他...原创 2018-04-25 20:15:17 · 208 阅读 · 0 评论 -
设计模式之单例模式(创建型,保证独一无二)
介绍意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 主要解决:一个全局使用的类频繁地创建与销毁。 何时使用:当您想控制实例数目,节省系统资源的时候。 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 关键代码:构造函数是私有的。饿汉式单例场景:类的构造函数定义为private的,保证其他类不能实例化此类,然后提供了一个静态实例并返回给调用者...原创 2018-04-21 21:39:23 · 222 阅读 · 0 评论 -
设计模式之工厂模式(创建型,生产质量达标的品牌产品)
简单工厂模式(不属于23种经典设计模式之一)场景:我们知道啤酒有很多品牌,例如青岛、雪花、百威,然后会有很多啤酒生产厂,如果一个啤酒生产厂里可以同时生产青岛、雪花、百威啤酒,那么这就是简单工厂模式了,是不是很简单? 代码: 首先得有啤酒这一个东西存在,然后啤酒又分为青岛啤酒、雪花啤酒、百威啤酒。 1.先描述出啤酒这一个东西:/** * 啤酒应该为一个统称,因为它有很多品牌的啤酒 ...原创 2018-04-21 13:20:14 · 229 阅读 · 0 评论 -
设计模式之适配器模式(结构型,需要一个转换头,用来兼容)
介绍标准定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 通俗理解:我们日常用的读卡器就是一个适配器,内存卡不能直接插入笔记本,需要将内存卡先插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。案例场景:有一个老系统运行了很久,目前十分稳定,不便再去修改里面的代码。但是为了兼容新的需求或标准,我...原创 2018-05-02 20:12:47 · 315 阅读 · 0 评论 -
设计模式之委派模式(不属于23种经典设计模式之一)
介绍标准定义:委派模式的原理为类B和类A是两个互相没有任何关系的类,B具有和A一模一样的方法和属性,并且调用B中的方法、属性就是调用A中同名的方法和属性。B好像就是一个受A授权委托的中介。第三方的代码不需要知道A的存在,也不需要和A发生直接的联系,通过B就可以直接使用A的功能,这样既能够使用到A的各种功能,又能够很好的将A保护起来,一举两得。 通俗理解:我们在项目开发中都是一个项目团队,老板...原创 2018-05-01 21:43:05 · 5152 阅读 · 0 评论 -
设计模式之模板模式(行为型,流程标准化,原料自己加)
介绍定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。通俗讲,完成一件事情有固定的几个步骤,但是每个步骤根据对象的不同而实现细节不同,可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法,每个步骤的具体实现,由子类完成。 应用1: spring中对Hibernate的支持,将一些已经定好...原创 2018-05-01 14:55:03 · 365 阅读 · 0 评论 -
设计模式之策略模式(行为型,方式自己随便选,都能达到目的就行)
介绍意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。 何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。 如何解决:将这些算法封装成一个一个的类,任意地替换。 关键代码:实现同一个接口。案例场景:旅游路线(选择坐车、坐飞机、坐船…)、支付方式(选择支付宝、...原创 2018-05-01 10:00:16 · 186 阅读 · 0 评论 -
设计模式之原型模式(创建型,拔一根毫毛,吹出猴万个)
介绍原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此...原创 2018-04-22 17:02:27 · 336 阅读 · 0 评论