设计模式 六月 03, 2021

状态模式

文章字数 4.7k 阅读约需 4 mins.

随着增加新的状态或者修改一个状体(if else(或switch case)语句的增多或者修改)可能会引起很大的修改,而程序的可读性,扩展性也会变得很弱。维护也会很麻烦。那么我就考虑只修改自身状态的...

查看全文

设计模式 六月 03, 2021

状态模式

文章字数 4.7k 阅读约需 4 mins.

随着增加新的状态或者修改一个状体(if else(或switch case)语句的增多或者修改)可能会引起很大的修改,而程序的可读性,扩展性也会变得很弱。维护也会很麻烦。那么我就考虑只修改自身状态的模式。

允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

一个对象的行为取决于一个或多个动态变化的属性 ,这样的属性叫做 状态 ,这样的对象叫做 有状态的 ( stateful ) 对象 ,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动...

查看全文

设计模式 六月 03, 2021

代理模式

文章字数 6.5k 阅读约需 6 mins.

遇到一个“复杂的对象”的创建工作,该对象由一定各个部分的子对象用一定的算法构成,由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定。

提供一种“封装机制”来隔离“复杂对象的各个部”的变化,从而保持系统中的“稳定构建算法.

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

  • 抽象建造者角色(Builder):为创建一个Product对象的各个部件指定抽象接口,以规范产品对象的各个组成成分的建造。一般而言,此角色规定要实现复杂对象的哪些...

查看全文

设计模式 六月 03, 2021

原型模式

文章字数 5.4k 阅读约需 5 mins.

当对象的构造函数非常复杂,在生成新对象的时候非常耗时间、耗资源的情况,怎么来创建.

通过复制(克隆、拷贝)一个指定类型的对象来创建更多同类型的对象。这个指定的对象可被称为“原型”对象,也就是通过复制原型对象来得到更多同类型的对象。

客户(Client)角色:使用原型对象的客户程序
抽象原型(Prototype)角色:规定了具体原型对象必须实现的接口(如果要提供深拷贝,则必须具有实现clone的规定)
具体原型(Concrete Prototype):从抽象原型派生而来,是客户程序使用的对象,即被复...

查看全文

设计模式 六月 03, 2021

中介者模式

文章字数 3.8k 阅读约需 3 mins.

面对一系列的相交互对象。怎么样保证使各对象不需要显式地相互引用,使其耦合松散.

用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

  • 抽象中介者(Mediator):中介者定义一个接口用于与各同事(Colleague)对象通信。
  • 具体中介者(ConcreteMediator): 具体中介者通过协调各同事对象实现协作行为。了解并维护它的各个同事。
  • 抽象同事类(Colleague class): 定义同事类接口,定义各同事...
查看全文

设计模式 六月 03, 2021

门面模式

文章字数 3.3k 阅读约需 3 mins.

想要办理一些业务的时候,由于程序复杂,需要跑很多地方才能完成一项业务.这时候就想着能不能有个统一的窗口,能按照流程帮我办理好这些业务.这也是政府当下推广的”最多跑一次”服务.

提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。

  • 门面角色:客户端调用这个角色的方法。此角色知晓相关的子系统的功能和责任。正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统中去。

  • 子系统角色:可以同时有一个或者多个子系统。每个子系统都...

查看全文

设计模式 六月 03, 2021

代理模式

文章字数 15k 阅读约需 14 mins.

​ 在不直接操作对象的情况下,对此对象进行访问.

​ 可以通过引入一个新的对象,来实现对真实对象的操作或者将新的对象作为真实对象的一个替身。即代理对象。它可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务.

代理可以提供延迟实例化(lazy instantiation),控制访问, 等等,包括只在调用中传递。

​ 一个处理纯本地资源的代理有时被称作虚拟代理。

​ 远程服务的代理常常称为远程代理。

​ 强制 控制访问的代理称为保护...

查看全文
0%