设计模式笔记

来源:互联网 发布:刚开淘宝店铺卖什么好 编辑:程序博客网 时间:2024/05/16 12:41

    • 背景
    • 疑难点笔记
      • 1装饰模式
      • 2 简单工厂模式
      • 3工厂方法模式
      • 4抽象工厂模式
      • 5 策略模式
      • 6代理模式
      • 7 原型模式

1 背景

我其实一直不太重视设计模式,感觉一切的模式都是面向对象的基础语法支撑起来的,截止目前我还是认为只要理解了java的语法,就能找到解决问题的方法。比如单例模式是静态类的存储特性的最好应用,代理模式是多形性的应用。并且android有google这个伟大的巨人给我们源码。一切的设计模式我感觉都有体现,虽说心中带有很多质疑,但是我还是开始我的设置模式学习之旅。本次学习是参考了《大话设计模式》》这本书。

疑难点笔记

这里只要是我的自己的笔记,以后如果有时间,我可能会整理这部分内容,但是目前我这里仅仅是记录自己感觉奇怪的模式。

2.1装饰模式

装饰模式是动态的给一个类添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。

在我看来,装饰模式有点类似递归调用,装饰模式结构图如下图:

装饰模式
ConcreteComponent这个类类似于递归调用的最开始的一个值。decorator的子类也就是真正的装饰实体类concrectdecorator,也就是在这些类里面灵活的增加功能。这里是具有自己的一个句柄参数的方法。从而concrectdecorator具有了conponent的一个句柄。若是再次调用concrectdecorator的特定的方法。会获得上个concrectdecorator的一个对象。有点类似c的链表结构。最终结构如下图

装饰模式最终实例类图

从这个图中我们很容易知道这里最重要的两个元素concreatecompoent和concretedectorator。其他都可以省略。但是这里面对一个问题。decorator的特定方法必须接受自己的句柄。并且最终的目的是方便调用根的operation()方法。所以一般来说这里的几个元素都不可或缺。当conreatecompoent属于decortor,这里我们可以看成是省略了compoent或者是dectorator,关系图如下

装饰模式最终图
目前我没想到这个模式的主要针对的问题空间。以后补充。

2.2 简单工厂模式

按需产生类,也就是判断语句的变种。更加的面向对象,可以产生面向对象的变成代码,使代码清晰。但是呢,这个玩意面对扩展,就稍显麻烦了,对扩展支持不友好。若是想添加一个类,就要改变工厂类代码。

ps:为啥方法工厂里面都用静态方法。根本没啥特别的好处。除了不用new实例,直接调用。2ps这里放回多个实例。静态代码区产生新的对象,并且是我们具有新的对象的引用,基本类似c++的内联函数产生新的对象。这里没啥特别的。

2.3工厂方法模式

这个玩意其实就是通过中间类产生一个类的实例。别人都说可以实现对类的添加而不影响工程。实现了开闭原则,但是我不理解。wtf!!为毛你不直接new出来一个呢??结构图如下:

工厂方法模式
这里就不管了。

ps可能有些实例的创建比较复杂感觉可以用!!

2.4抽象工厂模式

工厂变成一个抽象类。可以产生一个product的一系类的产品的的类。和工厂方法差不多,就是功能稍微强大点。

这里写图片描述

2.5 策略模式

他定义了算法家族,分别封装起来。让他们直接相互替换。我感觉有点像简单工厂模式,这里都是为了封装。

这里写图片描述

封装代码。简化客户端。

2.6代理模式

为其他对象提供一种代理,以控制这个对象。结构图如下:

这里写图片描述

其实也就是封装,代理类控制真正的目标类,这里主要用于远程管理,与大文件加载或者耗时操作等。

2.7 原型模式

用原型实例指定创建对象的种类。并且通过拷贝这些原型创建新的对象。

0 0
原创粉丝点击