
设计模式
逐步讲解设计模式
unhappy404
技术会过时但思维不会
展开
-
观察者模式-
观察者模式观察者模式的概念jdk API实现简单动态发布提醒的例子Guava 实现简单动态发布提醒的例子源码中的例子观察者模式的概念观察者模式其实比起之前的设计模式,较为特别,区别还是比较明显的他是一个比较被动的模式,简单来说有点像触发事件或者说监听器的概念,就是A类执行了某个方法(不是指定的发信息给某类),然后B类、C类等关注了它的类收到了对应的信息。放在生活中,就是你特别关注的女神发了动态,qq、微博之类的会提醒你,当然,往往与此同时,被提醒的不止你一个,还有其他众多的关注了女神的粉丝。放在工原创 2020-12-29 15:41:10 · 279 阅读 · 0 评论 -
装饰者模式-IO、MyBatis中的典型应用
装饰者模式与代理模式、适配器模式的区别源码应用IO相关MyBatis与代理模式、适配器模式的区别其实要说装饰者模式的应用场景是什么,从之前的代理模式、适配器模式来讲更容易入手其实装饰者模式与代理模式从结构角度讲是没啥区别的,只不过从应用角度讲,代理模式注重控制访问权限,在方法前后加以限制判断。而装饰者模式是重在装饰,也就是对原有方法的拓展、加强、延申。而适配器模式与这两者的区别亦如是,适配器"代理"某个类,是为了给另一个类做一个转换和适配,而且从设计角度讲,与前两者不同的是,它更多的是一个后置的考虑原创 2020-12-29 14:22:23 · 178 阅读 · 0 评论 -
适配器模式-第三方登录与设计模式的七七八八
适配器模式应用场景第三方登录-单一适配器第三方登录-多种设计模式适配器模式源码中的体现应用场景适配器模式一般是一个软件运维阶段出现的模式,为了兼容不同类,搞一个接口出来,这个接口的作用类似于数据线转换头这种概念,命名一般以xxxxAdapter这样的。比如我们常见的第三方登录,在系统一开始设计的时候,可能只有用户名密码登陆,后来随着qq、微信、手机登陆的普及,登陆方式也多了起来,这个时候就需要适配器模式了,在不改变原来登陆逻辑的基础上,与新的三方登陆做一个适配。第三方登录-单一适配器我们先看第一阶原创 2020-12-28 16:37:40 · 1454 阅读 · 6 评论 -
模板方法模式-相同逻辑抽象到父类,个别实现放在子类
模板方法应用场景代码例子源码场景应用场景模板方法模式适用于一些套路化的场景,比如相亲,聊天见面这些都很通用,可以抽象到父类统一实现。吃饭的时候根据对方的口味不同,选择不同的菜系,子类具体实现。代码例子/** * 模板会有一个或者多个未现实方法, * 而且这几个未实现方法有固定的执行循序 */public abstract class Appointment { private boolean needHomeworkFlag = true; protected final原创 2020-12-28 15:02:53 · 285 阅读 · 0 评论 -
策略模式-减少代码中大量的if-else与switch
策略模式策略模式的应用场景策略模式例子-支付策略模式在源码中的应用Comparator构造器TreeMap构造方法工作中-工作流DispatcherServlet-几种模式的混合策略模式的应用场景策略模式也可以见名知意,其实很多设计模式的名字取的是很贴切的。策略模式的经典例子就是商场打折策略,根据不同的打折方案来选择不同的打折策略。在不用策略模式之前,我们可能在一个类中用if-else就搞定了。但是很显然是不够优雅的。当我们需要在几种算法中动态的选择一种,就需要用到策略模式了。策略模式例子-支付原创 2020-12-24 15:36:46 · 385 阅读 · 0 评论 -
委派模式-特殊场景下的静态代理
委派模式委派模式的应用场景场景代码解析结论委派模式的应用场景其实委派模式不属于23种设计模式之一,可以看作一种特殊的静态代理模式,它与一般静态代理模式的区别其实也显而易见,见名知意。委派模式就是一个负责任务的调用和分配的类,比如我们熟悉的DispatcherServlet,如果说一般静态代理模式是经纪人和明星关系,那么委派模式就是项目经理和开发人员的模式。项目经理就是那个"代理类",只不过它服务的对象不是被代理类了,是调用者-“老板”,老板要实现一个支付功能和一个退款功能,交给项目经理去做,项目经理原创 2020-12-24 14:23:06 · 128 阅读 · 0 评论 -
从生活场景、业务场景剖析代理模式(JDK、CGLIB、spring)
文章目录代理模式应用场景代理模式应用场景代理模式就是一层代理,日常生活中的中介、经纪人,代码中的事务代理、非侵入式日志等都是代理。代理模式就是代理对象持有被代理对象的引用,在代理类中访问代理对象的时候,在方法前后做一些处理逻辑。比如经纪人持有明星的访问权,记者要采访明星,经纪人会对记者的访问做一些筛选、档期判断等操作,之后符合条件的话才会进入到访问明星的阶段。代理模式属于结构型模式。...原创 2020-12-23 16:52:28 · 639 阅读 · 1 评论 -
原型模式
文章目录什么原型模式深拷贝与浅拷贝实现原型模式什么原型模式其实原型模式在我的理解下,就是为了深度拷贝对象而设计的一种模式,特别对于某些创建对象过程比较复杂(比如构造函数需要set很多变量啥的)的场景,而我们又需要大量的相似对象,就需要原型模式深拷贝与浅拷贝了解原型模式前,需要了解深拷贝和浅拷贝浅拷贝就是只拷贝对象本身以及它成员变量本身的值深拷贝就是拷贝对象本身以及它成员变量本身的值以及成员变量所指向的对象说起来拗口,代码一目了然Class People(){ int age; Peopl原创 2020-12-04 16:13:04 · 72 阅读 · 0 评论 -
通过debug一步一步了解单例模式
单例模式什么是单例模式单例模式的应用场景单例模式的分类饿汉式单例懒汉式单例什么是单例模式单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)以上是百科解释,有以下几个特点属于创建型模式,工厂模式是重复的创建多个实例,重点在把复杂的过程封装起来。单例是创建一个唯一的实例,重在唯一性。一般是当前进程内单例即全局单例,有些是线程内单例(比如ThreadLocal)。要达到单例,原创 2020-11-26 14:43:10 · 263 阅读 · 1 评论 -
工厂模式-从jdk与spring源码解读三种工厂模式
工厂模式-从jdk与spring解读三种工厂模式简单工厂模式简单工厂模式的代码实现简单工厂在JDK中的例子CalendarLoggerFactory工厂方法模式简单工厂模式的不足JDK中的例子ILoggerFactory抽象工厂模式抽象工厂是什么JDK中的应用Collection小结简单工厂模式、工厂方法模式、抽象工厂模式,是一个由简到繁,根据需求的不断复杂化多样化而诞生的过程,工厂模式其实就是根据工厂创建对象,只不过有的是小作坊,有的是大车间简单工厂模式简单工厂模式就相当于一个小作坊,客户端给工原创 2020-11-13 16:38:08 · 651 阅读 · 0 评论 -
学习设计模式前明确的几个问题
设计模式是什么?就是代码设计的一种模式。好吧,看上去像是一句废话。我们编码的目的自然是为了实现特定的需求,某种意义上讲,只要需求实现了,我们就达到了目的。但事实上,在实际应用中,需求是多变的,甚至编码的人员也是多变的,这就带来了一些功能的拓展,运维接手的难易程度。良好的编程习惯可以给我们带来很大便捷,具体请见阿里巴巴编程规约在编码规约中,有一个环节是设计阶段,这个阶段,对于产品经理来说,是产品功能的设计;对于技术经理来说,可能是表设计,架构选用;对于核心开发的程序员来说,最重要但就是设计模式了,原创 2020-11-13 13:47:38 · 158 阅读 · 0 评论 -
设计模式六大原则
设计模式六大原则单一职责原则接口隔离原则依赖倒置原则迪米特法则里氏替换原则开闭原则单一职责原则单一职责原则(SRP:Single responsibility principle)又称单一功能原则,面向对象五个基本原则(SOLID)之一。它规定一个类应该只有一个发生变化的原因。该原则由罗伯特·C·马丁(Robert C. Martin)于《敏捷软件开发:原则、模式与实践》一书中给出的。马丁表示此原则是基于汤姆·狄马克(Tom DeMarco)和Meilir Page-Jones的著作中的内聚性原则发展原创 2020-11-12 16:14:19 · 195 阅读 · 3 评论