
设计模式
心相印-Garrett
认真你就输了,一直认真你就赢了
展开
-
设计模式—代理模式与装饰器模式区别
前言从菜鸟设计模式教程上摘下来一段解释代理模式与装饰器模式、适配器模式的区别:和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口;和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。代理模式和装饰器模式非常相近,本文通过举例,针对俩者的区别进行探讨。示例:孩子会吃饭创建孩子吃饭的接口public interface IChi...原创 2019-12-11 14:23:41 · 658 阅读 · 0 评论 -
设计模式—装饰器模式
前言装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。原理UML类图1、C...原创 2019-12-11 10:58:56 · 138 阅读 · 0 评论 -
设计模式—设计模式七大设计原则
设计模式的目的软件编写过程中,程序员面临者来自:耦合性、内聚性(高内聚、低耦合)可维护性可扩展性(当需要增加新的功能时,非常的方便,成为可维护性)重用性(相同代码不用多次编写)灵活性可读性(编程规范性,便于其他程序员的阅读和理解)等等多方面的挑战,设计模式就是为了让程序具有更好的上面这些性质。另外之前听一个设计模式相关的视频,老师讲了两个金句:设计模式包含了面向对象的精髓...原创 2019-12-10 20:22:20 · 324 阅读 · 0 评论 -
设计模式—组合与聚合详解
在UML类图中,聚合是空心菱形,组合是实心菱形。简单来说:组合的关系就像一个学生和他的各个器官,手、脚、鼻子、眼睛等器官组合成了一个学生,这些器官离开了学生这个个体,也就失去了意义,无法单独生存,因此,组合关系的类具有相同的生命周期,它们的联系更加紧密。而聚合就像一个班级有许多学生构成,学生离开了班级,作为一个个体仍然能够存活。聚合案例public ClassRoom{ public...原创 2019-12-10 18:18:07 · 2506 阅读 · 0 评论 -
设计模式—策略模式详解
前言在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。定义一系列算法,将每个算法封装到具有公共接口的一系列策略类中,从而使它们可以相互替换 & 让算法可在不影响客户端的情况...原创 2019-12-10 16:35:02 · 250 阅读 · 0 评论 -
设计模式—解释器模式详解《二》
解释器模式是类的行为模式,给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器,客户端可以使用这个解释器来解释这个语言中的句子。为了加深对于解释器模式的理解,大家可以先看我的第一篇设计模式—解释器模式详解《一》意图给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。用途对于一些固定文法构建一个解释句子的解释器。何时使用如果一...原创 2019-12-10 11:58:25 · 238 阅读 · 0 评论 -
设计模式—解释器模式详解《一》
前言解释器模式是23种设计模式的最后一个设计模式,要讲清楚解释器模式,我们分两个部分来理解,本篇是第一部分先理解它目前的应用场景,然后再理解它的原理。为了帮助理解解释器模式,我们先来谈谈编译原理上说的编译器,编译器分为几个部分组成,比如:词法分析器语法分析器语义分析器中间代码优化器最终的代码生成器而这个解释器其实就是完成了对语法的解析,将一个个的词组解释成了一个个语法范畴,之后...原创 2019-12-10 11:20:45 · 287 阅读 · 0 评论 -
设计模式—抽象工厂模式详解
前言在上文提到的最易懂的设计模式系列解析:工厂方法模式,发现工厂方法模式存在一个严重的问题:一个具体工厂只能创建一类产品而在实际过程中,一个工厂往往需要生产多类产品。为了解决上述的问题,我们又使用了一种新的设计模式:抽象工厂模式。UML类图抽象工厂模式中存在四种角色,分别是抽象工厂角色,具体工厂角色,抽象产品角色,具体产品角色。抽象工厂角色:担任这个角色的是工厂方法模式的核心,它是与...原创 2019-12-06 18:31:19 · 712 阅读 · 0 评论 -
设计模式—工厂方法模式详解
前言前一篇介绍了《设计模式—简单工厂模式详解》,可以知道简单工厂模式有一些弊端:工厂类集中了所有实例(产品)的创建逻辑,一旦这个工厂不能正常工作,整个系统都会受到影响;违背“开放 - 关闭原则”,一旦添加新产品就不得不修改工厂类的逻辑,这样就会造成工厂逻辑过于复杂;简单工厂模式由于使用了静态工厂方法,静态方法不能被继承和重写,会造成工厂角色无法形成基于继承的等级结构。为了解决上述的问...原创 2019-12-05 20:40:31 · 252 阅读 · 0 评论 -
设计模式—简单工厂模式详解
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。...原创 2019-12-04 21:38:34 · 359 阅读 · 0 评论 -
Java代理模式2 - JDK动态代理实现
上文全面介绍了一下代理模式,以及给出了静态代理的实现,本节主要介绍JDK动态代理的实现。原创 2016-11-23 10:52:35 · 261 阅读 · 0 评论 -
Java代理模式3 - cglib动态代理实现
JDK的动态代理机制只能代理实现了接口的类,而不能实现接口的类就不能实现JDK的动态代理,cglib是针对类来实现代理的,他的原理是对指定的目标类生成一个子类,并覆盖其中方法实现增强,但因为采用的是继承,所以不能对final修饰的类进行代理。原创 2016-11-23 10:55:03 · 382 阅读 · 0 评论 -
Java代理模式1 - 静态代理、动态代理
AOP的拦截功能是由java中的动态代理来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类。为了更好的理解动态代理,先来看看静态代理是如何实现的。原创 2016-11-23 10:39:34 · 270 阅读 · 0 评论