设计模式
架构师的小跟班
这个小伙好懒,啥都没写
展开
-
模板方法设计模式
模板设计模式——我的理解通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。模板模式的类图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HENKFmuy-1590667855547)(https://upload-images.jianshu.io/upload_images/15083002-ca7原创 2020-05-28 20:14:21 · 146 阅读 · 0 评论 -
策略设计模式
策略设计模式——我的理解在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等。例如:关于大闸蟹的做法有很多种,我们以清蒸大闸蟹和红烧大闸蟹两种方法为例策略设计模式——结构图解图解注意:==策略模式的重心不是如何实现算法,而是如何组织这些算法,从而让程序结构更加灵活==结构策略模式的主要角色如下:抽象策略(Strategy)类:定义了一原创 2020-05-28 20:19:32 · 195 阅读 · 0 评论 -
观察者设计模式
观察者设计模式——我的理解我们可以拿微信公众号来举例,假设微信用户就是观察者,微信公众号是被观察者,有多个的微信用户关注了“外酥里嫩唐僧肉”这个公众号,当这个公众号更新(不定时发布一些消息)时就会通知这些订阅的微信用户,关注公众号的微信用户就可以收到推送消息,取消关注就收不到推送消息。*大白话:就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 *结构和图解图解结构在观察者中有如下角色:subject:抽象主题(抽象被观察者)。抽象主题角原创 2020-05-28 22:59:22 · 354 阅读 · 0 评论 -
单例设计模式
单例设计模式——我的理解简单来说,就是用来创建独一无二的,只有一个实例对象,并且对外提供一个访问该实例的全局访问点使用单例模式有什么好处单例模式只生成一个实例,减少了系统性能开销。当一个实例的创建需要较多资源时,比如读取配置文件、产生其他依赖对象等,可以通过启动应用时直接产生一个永驻内存的单例对象来避免重复创建对象产生的性能消耗。应用场景项目中读取配置文件的类数据库连接池Spring中的Beans默认是单例Windows的任务管理器等等…实现方式饿汉式懒汉式双原创 2020-05-28 23:39:36 · 201 阅读 · 0 评论 -
工厂方法设计模式
工厂方法设计模式——我的理解简单点理解,就是为了将对象的创建与使用分离,并遵守对外开放对内封闭的原则,每个类 都有一个相应的 工厂对象,负责创建并初始化该类。举例:有许多手机制造商,如小米,华为,IPhone,三星等;客户只要手机产品,只知道产品名,而不关心手机的制造过程;客户不关心创建手机产品的细节,只关心产品的品牌和性能。结构和图解图解结构产品组成(角色)关系作用抽象产品(AbstractProduct)具体产品的父类描述具体产品的公共接原创 2020-05-31 01:09:47 · 171 阅读 · 0 评论 -
抽象工厂设计模式
抽象工厂设计模式——我的理解抽象工厂,提供了一系列相关产品对象(属于同一个产品族)的创建接口,有很多工厂实现了这些接口,但是每个工厂的实现不相同。简单说就是每一个工厂中生产的一系列对象都是同一个产品族的。用冰箱来举例:美的(具体工厂)生产的产品有美的冰箱、美的空调、美的电风扇等海尔(具体工厂)生产的产品有海尔冰箱、海尔空调、海尔电风扇等每一个具体工厂,可以创建多种类的产品,这些产品都属于同一个产品族结构和图解图解结构工厂角色作用Abst原创 2020-05-31 01:11:08 · 207 阅读 · 0 评论 -
静态代理设计模式
静态代理设计模式——我的理解代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用结构和图解图解结构角色作用抽象主题角色(Subject)声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象。具体主题角色(RealSubject)也称为委托角色或者被代理角色。定义了代理对象所代表的目标对象。代理主题角色(Proxy)代理对象内部含有目标对象的引用,从而可以在任何时候操作目标对象;代理对象提供一原创 2020-06-02 07:48:21 · 185 阅读 · 0 评论 -
对象适配器设计模式
对象适配器设计模式——我的理解当我们要访问的接口A中没有我们想要的方法 ,却在另一个接口B中发现了合适的方法,我们又不能改变访问接口A,在这种情况下,我们可以定义一个适配器p来进行中转,这个适配器p要实现我们访问的接口A,这样我们就能继续访问当前接口A中的方法(虽然它目前不是我们的菜),然后在适配器P中定义私有变量C(对象)(B接口指向变量名),再定义一个带参数的构造器用来为对象C赋值,再在A接口的方法实现中使用对象C调用其来源于B接口的方法。简单点理解就是平常所见的转接头,转换器之类的存在。就是原创 2020-06-02 07:54:43 · 461 阅读 · 0 评论 -
动态代理设计模式
动态代理设计模式——我的理解动态代理是指在运行时,动态生成代理类。即,代理类的字节码将在运行时生成并载入当前的ClassLoader。JDK的动态代理我们不再需要再手动的创建代理类,我们只需要编写一个动态处理器(实现 InvocationHandler 接口,通过统一的invoke方法,对原函数的进行处理)就可以了。真正的代理对象由JDK再运行时为我们动态的来创建。java动态代理机制中有两个重要的类和接口InvocationHandler(接口)和Proxy(类),这一个类Proxy和接原创 2020-06-02 07:50:54 · 169 阅读 · 0 评论