
设计模式
设计模式在开发中随处可见,笔者之前学过一些可是记得的却零零碎碎,所以以此来学习和复习
Jaymeng8848
攀爬每一个巨人,站在他们肩膀上看一看
展开
-
【学习设计模式】装饰者模式
设计初衷:我们使用继承或组合来扩展对象的行为,但这是在编译时完成的,它适用于类的所有实例。我们无法在运行时添加任何删除任何现有行为的新功能 - 这就是Decorator模式出现的时候假设我们想要实现不同种类的汽车 -我们可以创建界面Car来定义组装方法然后我们可以拥有一辆Basic汽车,我们还可以将它扩展到跑车和豪华轿车。实现层次结构将如下图所示。:实现了模板方法,定义了算法的骨架。具体类(ConcreteClass):实现抽象类中的转载 2020-07-29 08:48:36 · 112 阅读 · 0 评论 -
【学习设计模式】记录
设计模式在软件的应用太过广泛,能看到这个专栏博客的学友应该再清楚不过了,所以就不再赘述了。这篇的目的主要是记录一下学习设计模式的方法。我会推荐一个博主的专栏,他是翻译外文讲解设计模式。我认为非常优秀。设计模式专栏还有一个学习网站也还不错,综合两个一起学习一定能学到精髓。学习网站-设计模式...原创 2020-07-21 10:31:27 · 98 阅读 · 0 评论 -
代码耦合和解耦
一、耦合1、耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。2、在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小。3、分类:有软硬件之间的耦合,还有软件各模块之间的耦合。耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信...原创 2020-04-10 19:17:29 · 4631 阅读 · 0 评论 -
【学习设计模式】策略模式
简述什么是策略模式:它定义一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户端应用而独立变化。策略模式适用场景:策略模式适合解决当程序出现多个不同分支,而且每个分支的逻辑还比较复杂的场景。下面介绍策略模式都几个角色Context(环境类):负责使用算法策略,其中维持了一个抽象策略类的引用实例。Strategy(抽象策略类):所有策略类的父类,为所支持的策略算法声明了抽象方法。=> 既可以是抽象类也可以是接口ConcreteStrategy(具体策略类):原创 2020-07-16 12:22:52 · 119 阅读 · 0 评论 -
【学习设计模式+手写】适配器模式
适配器模式总的来说分为三种:类适配器,对象适配器,接口适配器。这里只总结两种也是因为类适配器很简单并且对象适配器就是在类适配器上做改造因此懂得了对象适配器,类适配器一想就明白。适配器模式和生活中的充电线转换头很像,因此以此来当作例子会很容易明白。适配器就相当于一根安卓线要通过转换头去给苹果手机充电。接下来就是我自己手写的充电代码:对象适配器:/** * @author Jay * @date 2020/7/15 19:26 * @Description: * 安卓线 */public原创 2020-07-15 20:40:15 · 258 阅读 · 0 评论 -
【学习设计模式+手写】观察者模式
观察者模式在实际运用中非常广泛:非常值得学习,代码也不难,无非两个结构两个实现类,通过业务逻辑编织。直接上代码/** * @author Jay * @date 2020/7/15 18:34 * @Description: */public interface Observer { public void collect(String message);}/** * @author Jay * @date 2020/7/15 18:33 * @Description:原创 2020-07-15 18:55:44 · 220 阅读 · 0 评论 -
【学习设计模式+手写】jdk动态代理与cglib动态代理(代理设计模式)
代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。提一下静态代理接口/** * 接口 * @author Jay * @date 2020/7/10 11:38 * @Description: */public inter原创 2020-07-10 16:25:17 · 187 阅读 · 0 评论 -
【学习设计模式+手写】建造者模式
建造者模式:优点:使用建造者模式可以使客户端不必知道产品内部组成的细节。具体的建造者类之间是相互独立的,这有利于系统的扩展。具体的建造者相互独立,因此可以对建造的过程逐步细化,而不会对其他模块产生任何影响。缺点:建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。适用场景:产品类非常复杂或者产品类因为调用顺序不原创 2020-07-15 16:51:30 · 176 阅读 · 0 评论 -
【学习设计模式】简单工厂、工厂模式、抽象工厂模式
比较简单直接上代码:定义三个接口和其实现类,解释在注释中/** * @author Jay * @date 2020/7/15 15:29 * @Description: */public interface Product {}/** * @author Jay * @date 2020/7/15 15:45 * @Description: */public interface Gift {}/** * @author Jay * @date 2020/7/15原创 2020-07-15 15:58:21 · 80 阅读 · 0 评论 -
【学习设计模式】原型设计模式
原型设计模式主要分为深克隆和浅克隆。浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。浅克隆的实现分为三点:1.将该类实现clonable接口;2.并覆盖Object的clone方法,设置为public关键字,原方法为protected;3.在clone()中调用super.clone();代码内容比较简单就不贴了,深克隆主要分为两种实现:第一种是通原创 2020-07-15 07:49:45 · 141 阅读 · 0 评论 -
【学习设计模式】单例设计模式
单例设计模式三个特点提一下:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。单例设计模式能被使用的就是四种:饿汉单例模式,懒汉单例模式,静态内部类单例模式,枚举单例模式单例设计模式还有两点需要重视,反射和序列化可以破解构造器私有化,其中反射直接获取单例模式的构造器构造对象,序列化是在读出文件是如果没有定义一个readResolve方法,接下来会因为实现了Serializable结构而判定其中代码中反射创建类为真而成功创建新对象。我就直接原创 2020-07-14 16:50:41 · 104 阅读 · 0 评论 -
【学习设计模式】设计模式原则
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。我们将在下面依次来介绍这 7 条原则一 .开闭原则开闭原则的定义软件实体应当对扩展开放,对修改关闭开闭原则的作用开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和灵活性的同时具备稳定性和延续性。具体来说,其作用如下。对软件测试的影响软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原原创 2020-07-14 14:53:32 · 220 阅读 · 0 评论