被调用的对象已与其客户端断开连接_初学面向对象--大话设计模式一书读后感(各模式总结)...
发布日期:2021-09-12 14:09:26 浏览次数:1 分类:技术文章

本文共 3743 字,大约阅读时间需要 12 分钟。

  1. 研一新生,本科计科,放羊,未学过面向对象,代码也没敲过几行。
  2. 遂恶补面向对象知识,以下是这5天对大话设计模式一书的各个模式的个人总结。

行为模式组:1,观察者模式:

首先是一个观察事件集合类,在这个集合类中,可以增删观察事件。

具体的观察事件类继承观察事件集合类,每个观察事件类拥有对这个事件所有观察者对象的引用。

然后是一个抽象观察者父类,每个具体观察者子类将重写并实现其具体的更新方法(即观察到事件发生时做的响应)。当具体事件发生变化时,将调用所有存于引用中的观察者的更新方法。

适用对象===具有一对多依赖的,“多”依赖于这个“一”的状态变化而进行更新。

典型例子——UI框架的设计,一个button对应多个监听器。

2,模版方法:

非常类似于建造者模式,所以需要加以区别。

这里受到http://blog.csdn.net/ljianhui/article/details/8395492此文的引导。

区别:模版模式更加注重于代码的复用,建造者模式更加注重建造流程的规范性。

模版模式下,定义了一个父类,在这个类中确定了一个操作的算法骨架,而“一些”步骤是抽象的,延迟到具体操作中去实现,而“另一些”(即无需做出修改的方法)在具体子类中相同的步骤则实现了代码的复用!

建造者模式下,显然在建造者父类中,只定义了建造流程的规程,也就是步骤,让具体产品类去实现这些步骤。

模版适用对象===

模板——监听器设计,父类定义了监听器的工作方式,而子类则实现各自监听器的 具体handle方法。

建造者——animals类定义动物具有吃喝拉撒,而子类则按照这个顺序实现具体的吃喝拉撒方法。

3,命令模式:

这是一个由服务员-命令-命令执行者组成的架构。

先说服务员类,相当于一个中介,被客户端调用,记录下客户端请求的命令清单(即记录下被调用的具体命令对象),然后把这些清单传递给命令执行者(执行者对象与具体命令是1对多的关系(这才需要命令模式呀))。

而命令类,首先有一个命令父类,定义了命令这个接口,然后每种具体命令继承这个接口并确定具体命令。

适用对象===有一个请求执行者面对多种多样的请求,需要解除请求者与请求执行者的耦合时。

例子——服务器作为命令执行者,传输协议作为服务员,繁多的协议便是不同的命令对象,当客户端发出请求时,由服务员(连接)递交请求给客户端。

4,状态模式:

有一个抽象的状态类,子类实现每个具体状态内容。在客户端里维护当前状态,以当前状态调用合适的状态对象。值得注意的是,平时使用中,状态机中每个状态的所要做的流程是大致相同的,都基于这个父类(框架)进行重写。

适用对象===程序的功能以状态发生变化。也就是所谓的状态机。

例子——如客户端有3个状态,请求连接,通信,结束连接。则可以由3个不同的子类进行维护对应的状态。

5,职责链模式:

有一个父类,这个父类有2个抽象方法,1个是上下级方法(所谓的链式),一个是功能方法。所有的字类继承后,一方面重写功能方法,完成自身职责的具体实现,另一方法,由事先确定好的整体链式,确定每个子类的上下级关系,构成一条职责链。

每个字类都有一个判断结构,如果这个子类的功能不足以完成请求,则调用上级来完成,并一直沿着职责链向上传递。

适用对象===事件处理机制?

例子——DNS的设计? 使用迭代的机制,若本地DNS找不到缓存,则递交给上级DNS站点处理。

创建模式组:

1,抽象工厂模式:

创建一个工厂父类,这个工厂类定义了所有类型产品的抽象产生方法,由具体的工厂类继承这个接口,创建具有特定实现的产品对象。为每种产品创造一个抽象的产品父类,有每种产品具体的产品类继承并完成具体的实现。客户端通过选择生成一个指定实现方式的具体工厂实例后,可选择生成所需要的产品类型(先确定产品的实现方式+再确定产品类型)。

tips:可以使用反射+配置文件的方式完成在客户端中对所需要工厂的选择。

适用对象===有多种类型的产品,同类型的产品又有不同的实现方式。(各类型产品的不同实现方式是相同的)

2,建造者模式:

由指挥者,建造者接口,具体建造类,产品组成。指挥者类用于调用建造者,建造者接口中规定了具体的建造流程(建造模式的核心所在),当然是用抽象的方法,所在在具体建造者类中,会重写每个建造流程中方法的具体实现,但不修改流程,最后返回具体产品实例。

适用对象===建造流程必须规范无误的创建模式。

3,工厂模式:

抽象一个工厂接口,抽象了返回某种产品的方法,具体工厂类中,重写此方法,让此方法返回一个具体产品的实例。抽象一个产品接口,在具体产品的类中,实现了产品的具体实现方式。于是,调用客户端,选择一个想要的产品实例所对应的具体工厂,由这个具体工厂生成具体产品实例并返回。

适用对象==区别于抽象工厂,但每个类型的产品仅有一种实现方式。即一个具体工厂只生产一种具体产品。

抽象工厂——先生产不同类型线程的抽象工厂,调用抽象工厂生产不同参数的线程。(先类型后参数)

工厂——先写好所有线程种类的工厂类,直接提供参数便返回对应的线程。(一次提供类型+参数)

4,原型模式:

核心是一个继承了ICloneable的原型类,他声明了一个抽象的克隆自己的方法(即实现clone()接口),具体原型类继承克隆类,使用原型类的clone()接口既得到了原型的拷贝(浅表复制),客户端先确定原型类的具体内容,然后就可以通过实例化具体原型类对象得到原型类的拷贝。通过在原型类中调用私有的构造方法进行克隆可以得到深肤质(我不会)

适用对象===需要实例化许多具有同一模版的对象们时使用

5,单例模式:

在实例化的操作中,由对象类自身进行一次判断——如果这个对象已经存在实例(现在时), 则不再实例化这个对象。保证这个对象只存在一个实例。

适用对象===各种Manager类。

创建者模式对一个产品的建造过程有很好的封装,对用户隐藏了复杂的实现过程。

结构型模式:1,适配器模式:

主要有3部分组成:适配对象,适配器,目标对象。适配对象是已经存在的,当我们得到一个新的目标对象的特殊方法,就创建一个继承于目标对象的适配器,通过重写目标对象中的方法,我们可以做到调用适配对象的方法去完成目标对象的方法。因此我们在客户端中,当要使用目标对象的特殊方法时,可以通过使用适配器中的重写方法,从而调用适配对象中的方法完成目标。

适用对象===使2个接口不同对象可以一起工作

例子——例如我是针对Runable类的一个方法,我可以写一个Adapter方法,当我有一个实现Callable接口的对象要调用这个方法时,可以先使用Adapter方法将其转化为Runnable类,再继续运行。

2,组合模式:

类似于树状结构,有一个抽象的组合类,有抽象的增删节点与功能方法,叶子结点和枝节点都继承这个组合类,叶子结点增删方法为空,重写了这个叶子节点自身所具有的功能实现。枝节点则不仅有自身功能的实现还具有增删节点的方法。

适用对象===当所面对的对象之间具有显著的层次结构时使用。

例子——例如公司-子公司-各个子公司的子部门-各个子公司子部门的人事结构,他们都继承抽象类,然后都实现了各自的增删方法。如公司实现了增删子公司的方法,子部门实现增删员工的方法,员工作为叶子节点,不再实现增删节点的方法。

3,装饰模式:

有一个抽象的对象类,他有一个抽象的装饰接口(用于增加功能的接口),还有一个抽象装饰类,被具体的装饰类继承,通过重写装饰方法,每个具体的装饰类拥有具体的给对象增减功能的方法实现。最后是具体对象类,继承于对象类,同样可以重写装饰接口完成增减功能的实现。

适用对象===某个对象需要动态的增减自身属性于方法时。

例子——未想到

4,外观模式:

外观模式封装了所有对象各种组合下的操作,他要了解所有的组合方式,组合类对每种方式声明一个方法,在这个方法中按组合方式进行具体实现,对外则只提供一个方法调用,每种组合方式构成一个方法,都在这个组合类中,供客户端调用。

适用对象===客户端不用过问具体调用了哪些对象的哪些方法,只需要知道有哪些组合。即对用户封装了组合下的实现。

5,享元模式---没看 类似于当一个对象在不同地方要被重复使用时,为了节约资源,对一个对象进行共享吧。

6,代理模式:

有3部分组成,代理人,被代理人,代理内容组成。代理内容类开放了所需要,让代理人和被代理人都继承了这个接口。在被代理人中,对代理的方法重写完成具体的实现,而代理重写接口方法,通过对被代理人的同名方法的调用完成代理。

适用对象===需要隐藏实际执行者时使用。

7,桥接模式:

强结构模式,只有在对象居然明显可分类行为时使用,根据不同角度的分类方法进行层层分类,每个子类通过继承即可,好处是经过分类之后,每个字类可以单独变化,自由增删,居然松耦合的优点。

适用对象===当需要从某种角度去分类实现对象时使用。

注:外观模式重在内部组合封装,对外一致呈现,组合模式重在动态挂载不同的对象类,装饰模式是对一个对象类动态增删方法或属性。

欢迎讨论与指正,有问题可留言私信,谢谢。

转载地址:https://blog.csdn.net/weixin_39545329/article/details/110460655 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:阿里云ecs连接rds 用内网地址还是外网_快速入门云服务器ECS,助力你的业务发展...
下一篇:影子卫士和影子系统哪个好用_哪个重装系统软件好用,怎么用

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月31日 10时28分26秒