![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
ckw@ldy
一如既往的坚持
展开
-
设计模式--策略模式
一、定义及应用场景1、定义其思想是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换。策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能2、应用场景假如系统中有很多类,而他们的区别仅仅在于他们的行为不同。一个系统需要动态地在几种算法中选择一种。二、案例(一)去商场买东西进行打折销售:领取优惠券抵扣、返现促销、拼团优惠最终得结果都是付钱 但是没有优惠政策都不相同1、促销策略抽象package com.ckw.strateg原创 2020-06-12 20:39:17 · 247 阅读 · 0 评论 -
设计模式--委派模式
定义:委派模式(Delegate Pattern)的基本作用就是负责任务的调度和分配任务,跟代理模式很像,可以看做是一种特殊情况下 的静态代理的全权代理,但是代理模式注重过程,而委派模式 注重结果。不属于GOF 23种设计模式之一。属于行为型模式Delegate 、Dispatcher结尾的一般都是委派(迷糊状态)一、案例讲解(1):老板(Boss)给项目经理(Leader)下任务,项目经理会根据 实际情况给每个员工派发工作任务,待员工把工作任务完成之后,再由项目经理汇报工 作进度和结果给老原创 2020-06-10 20:18:39 · 326 阅读 · 0 评论 -
设计模式--代理模式(二、动态代理)
注:接上一章静态代理一、动态代理动态代理和静态对比基本思路是一致的,只不过动态代理功能更加强大,随着业务的扩展适应性更强。还以找对象为例,使用动态代理相当于是能够适应复杂的业务场景。 不仅仅只是父亲给儿子找对象,如果找对象这项业务发展成了一个产业,进而出现了媒 婆、婚介所等这样的形式。此时用静态代理成本就更大了,需要一个更加通用的 解决方案,要满足任何单身人士找对象的需求。1、JDK动态代理(婚介案例)a、创建媒婆(婚介)JDKMeipo 类package com.ckw.proxy.dynami原创 2020-06-10 09:44:22 · 186 阅读 · 0 评论 -
设计模式--代理模式(一、静态代理)
给自己定义一个学习目标:掌握代理的应用场景与实现原理了解静态代理与动态代理的区别了解CGLib与JDK Proxy的根本区别手写实现自定义的动态代理代理模式:为其他对象提供一种代理,以控制对这个对象的访问。属于结构型设计模式一、静态代理(显示声明被代理对象)...原创 2020-06-10 09:14:17 · 188 阅读 · 0 评论 -
设计模式--原型模式
原型模式(Prototype Pattern)(如何让快速构建对象的方法总结):1、原型实例指定创建对象得种类,并且通过拷贝这些原型创建新的对象。2、调用者不需要知道创建细节,不调用构造方法3、属于创建型模式一、使用场景:1、类初始化资源较多2、new产生得对象需要非常繁琐得过程(数据准备、访问权限、、)3、构造函数比较复杂4、循环体中生产大量对象时可以使用以下方法进行直接赋值例如(原型模式):BeanUtils.copy()JSON.parseObject()Guava(Cop原创 2020-06-08 21:11:05 · 168 阅读 · 0 评论 -
设计模式--单例模式
一、饿汉式单例1、第一种写法package com.ckw.singleton.hungry;/** * @author ckw * @version 1.0 * @date 2020/6/8 14:24 * @description: 饿汉式 *//* 饿汉式单例 它是在类加载的时候就立即初始化,并且创建单例对象 优点:没有加任何的锁、执行效率比较高, 在用户体验上来说,比懒汉式更好 缺点:类加载的时候就初始化,不管你用还是不用,我都占着空间原创 2020-06-08 16:12:25 · 102 阅读 · 0 评论