GOF设计模式
本专栏介绍GOF(四人帮)设计模式,并以代码作为实例实现说明,实现语言为Java。
ChanKamShing
这个作者很懒,什么都没留下…
展开
-
消除if...else实战
相信不少朋友在开发的时候都会碰到过这种问题:大量使用if...else进行逻辑判断。不管是接手过来的系统,还是自己开发的系统,当你看到一大堆的if...else语句之后,心里总会冒出一句“这简直就是一堆shit”。最近博主热衷于重构代码,看到自己手上的系统的一些判断逻辑,恨不得将它全部删掉,再加上最近也接触到不少关于消除if...else的方法介绍文章,不由得自己也来搞搞。 ...原创 2019-03-14 13:21:03 · 330 阅读 · 0 评论 -
GOF设计模式——Proxy模式
一、什么是Proxy模式 Proxy,代理的意思,它指的是代替别人进行工作的人。当不一定需要本人亲自进行工作时,就可以寻找代理人去完成工作。在面向对象编程时,“本人”和“代理人”都是对象,要记住的一样东西,就是代理人可以替代本人去做某些事情,意味着代理人和本人就具有一定程度相同的属性和方法。二、Proxy模式的原理Subject:定义了使Proxy和RealSubje...原创 2019-02-14 19:07:58 · 186 阅读 · 0 评论 -
GOF设计模式——Flyweight模式
一、什么是Flyweight模式 Flyweight,是轻量级的意思,Flyweight模式旨在使得类的创建、使用变得简便。如何实现呢?在一般的编程里面,想要使用一个对象,会通过new的方式创建,那么每一个地方需要使用该对象,就要new一次,在计算机内存中则需要每次都要分配内存空间出来,当使用new的次数增多时,内存空间也随着消耗加大。Flyweight模式则是通过尽量共享实例来...原创 2019-02-13 16:46:08 · 175 阅读 · 0 评论 -
GOF设计模式——Composite模式
一、什么是Composite模式? Composite模式,可以借助计算机文件夹的例子去理解,一个文件夹里面可以存放文件,也可以存放子文件夹,这样子形成一种结构,这个“文件夹”就类似于一个容器,而且还是一种具有递归结构的容器。我们可以用Composite模式创造出这样的结构,使得容器和内容具有一致性。二、Composite模式的原理Client:使用Composite...原创 2019-02-09 22:40:59 · 196 阅读 · 0 评论 -
GOF设计模式——Strategy模式
一、什么是Strategy模式? Strategy,意思是“策略”的意思。使用Strategy模式设计的代码,就自带一种逻辑判断在里面,可以整体的替换算法的实现部分,或者说跟机器学习有相似之处。二、Strategy模式思想Context类:里面定义了Strategy类型属性,负责使用Strategy接口,使用了委托,实际上是调用Strategy的实现类的具体方法;...原创 2019-02-04 20:03:28 · 230 阅读 · 0 评论 -
GOF设计模式——Bridge模式
一、什么是Bridge模式? 讲述之前,先介绍两个关于类层次的重要概念:类的功能层次结构和类的实现层次结构。1、类的功能层次结构 假如现在有一个父类ClassFarther,它具有一些基本功能,现在希望在业务上新增新的功能时,可以通过编写一个子类ClassSon去继承父类ClassFarther,并将新的功能写在子类里面,这样就构成了类层次结构: ...原创 2019-02-02 23:57:38 · 195 阅读 · 0 评论 -
GOF设计模式——Builder模式
一、什么是Builder模式? builder模式,就好比一栋大楼,这栋大楼有很多个组件组成,但是这栋大楼只是一个各个组件结合起来的框架,每一栋大楼都有各自的特色,这些特色由它们实际情况决定。对于程序而言,这栋大楼就好比一个Builder抽象类,里面定义了很多组件方法,一个完整的功能离不开里面的每一个方法,具体实现依赖子类,只要继承这个抽象类,就可以根据组件方法组建起自己的“大楼...原创 2019-01-26 00:11:32 · 206 阅读 · 0 评论 -
GOF设计模式——Prototype模式
一、什么是Prototype模式? 在编程中,我们可以使用new关键字指定类名来生成类的实例,但是有时候也会有不指定类名的前提下生成实例。因为有时候对象种类繁多,无法将它们整合到一个类中;或者,生成实例的过程过于复杂,难以根据类生成实例;又或者,想要将类与框架解耦。这时,为了能够在不使用类名的情况下生成实例,可以使用Prototype模式,Prototype模式又叫原型模式,专门...原创 2019-01-23 23:59:50 · 143 阅读 · 0 评论 -
GOF设计模式——Singleton模式
一、什么是Singleton模式? Singleton模式就是平常所说的单例模式,简单来说就只有一个实例。在使用java.lang.String的时候,将不同的字符串赋给String引用,其实就是创建了一个String对象实例,当有1000个不同的字符串创建的时候,就会出现1000个实例。有时候,我们只想在程序里面创建一个实例,譬如Hibernate的SessionFactory...原创 2019-01-22 20:07:54 · 154 阅读 · 0 评论 -
GOF设计模式——Factory Method模式
一、什么是Factory Method模式 Factory Method模式是用来构建生成实例的工厂,在该模式下,父类决定实例生成的方式,但并不决定所要生成的具体类。这样的设计思想,就跟Template Method模式相似(具体参考:https://blog.csdn.net/weixin_39400271/article/details/86565016),因为Factory...原创 2019-01-21 19:30:19 · 289 阅读 · 0 评论 -
GOF设计模式——Template Method模式
一、什么是Template Method模式 顾名思义,Template Method模式就是模板方法模式。所谓的模板,就好比我们练书法一样,刚开始练习的时候,会拿各种各样的字样模板,照着写,练楷书时,就拿楷书模板,练行书时,就用行书模板。过程是固定的,即都是按着模板写,只是具体是楷书,还是行书,视具体情况,具体选择。那么,对应于Template Method模式,又会是怎样的思...原创 2019-01-20 21:01:21 · 185 阅读 · 0 评论 -
GOF设计模式——Adapter模式
一、什么是Adapter模式? Adapter模式,又称为适配器模式。 这是一个很通俗的名字,“适配器”,我们可以联想到笔记本电脑的充电器(专业名称又叫适配器),每一台笔记本电脑会对应只有一个适配器,适配器的作用是对民用的电压和电流进行转换,使得电压和电流满足当前的笔记本电脑的实际需求。那么,到了程序里面,又是怎么理解呢?我们可以将笔记本电脑实际的电压和电流当作...原创 2019-01-19 12:14:08 · 157 阅读 · 0 评论 -
GOF设计模式——Iterator模式
Iterator,自然而然想到的是用于集合遍历的迭代器Iterator,没错Iterator模式就是指这个意思。 先来看一段代码:int[] array = new int[10];for(int i = 0; i<array.length; i++){ System.out.println(array[i]);} 上面是...原创 2019-01-18 17:30:17 · 126 阅读 · 0 评论