设计模式
反面模式(Anti-pattern)
设计模式 - 免费 - Sunrise - - 浏览量: 9
在软件工程中,一个反面模式(Anti-pattern 或 Antipattern)指的是在实践中明显出现但又低效或是有待优化的设计模式,是用来解决问题的带有共同性的不良方法。它们已经经过研究并分类,以防止日后重蹈覆辙,并能在研发尚未投产的系统时辨认出来。
实体属性值模式(EAV 模式)
设计模式 - 免费 - Sunrise - - 浏览量: 8
实体属性值模型(Entity-attribute-value EAV)是一种用数据模型描述实体的属性(属性,参数),可以用来形容他们潜在巨大,但实际上将适用于给定的实体的数量是相对较少。 在数学中,这种模式被称为一个稀疏矩阵 。 EAV 也被称为对象的属性值的模式,垂直的数据库模型和开放式架构。
资源库模式(Repository)
设计模式 - 免费 - Sunrise - - 浏览量: 9
该模式通过提供集合风格的接口来访问领域对象,从而协调领域和数据映射层。 资料库模式封装了一组存储在数据存储器里的对象和操作它们的方面,这样子为数据持久化层提供了更加面向对象的视角。资料库模式同时也达到了领域层与数据映射层之间清晰分离,单向依赖的目的。
服务定位器模式(Service Locator)
设计模式 - 免费 - Sunrise - - 浏览量: 9
服务定位器模式被认为是一种反面模式! 服务定位器模式被一些人认为是一种反面模式。它违反了依赖倒置原则。该模式隐藏类的依赖,而不是暴露依赖(如果暴露可通过依赖注入的方式注入依赖)。当某项服务的依赖发生变化时,使用该服务的类的功能将面临被破坏的风险,最终导致系统难以维护。
委托模式(Delegation)
设计模式 - 免费 - Sunrise - - 浏览量: 9
在委托模式的示例里,一个对象将它要执行的任务委派给与之关联的帮助对象去执行。在示例中,「组长」声明了 writeCode 方法并使用它,其实「组长」把 writeCode 委托给「菜鸟开发者」的 writeBadCode 方法做了。这种反转责任的做法隐藏了其内部执行 writeBadCode 的细节。
访问者模式(Visitor)
设计模式 - 免费 - Sunrise - - 浏览量: 7
访问者模式可以让你将对象操作外包给其他对象。这样做的最主要原因就是关注(数据结构和数据操作)分离。但是被访问的类必须定一个契约接受访问者。 (详见例子中的 Role::accept 方法) 契约可以是一个抽象类也可直接就是一个接口。在此情况下,每个访问者必须自行选择调用访问者的哪个方法。
模板方法模式(Template Method)
设计模式 - 免费 - Sunrise - - 浏览量: 7
模板方法模式是一种行为型的设计模式。 可能你已经见过这种模式很多次了。它是一种让抽象模板的子类「完成」一系列算法的行为策略。 众所周知的「好莱坞原则」:「不要打电话给我们,我们会打电话给你」。这个类不是由子类调用的,而是以相反的方式。怎么做?当然很抽象啦!
策略模式(Strategy)
设计模式 - 免费 - Sunrise - - 浏览量: 6
分离「策略」并使他们之间能互相快速切换。此外,这种模式是一种不错的继承替代方案(替代使用扩展抽象类的方式)。
状态模式(State)
设计模式 - 免费 - Sunrise - - 浏览量: 7
状态模式可以基于一个对象的同种事务而封装出不同的行为。它提供一种简洁的方式使得对象在运行时可以改变自身行为,而不必借助单一庞大的条件判断语句。
规格模式(Specification)
设计模式 - 免费 - Sunrise - - 浏览量: 9
构建一个清晰的业务规则规范,其中每条规则都能被针对性地检查。每个规范类中都有一个称为 isSatisfiedBy 的方法,方法判断给定的规则是否满足规范从而返回 true 或 false。
空对象模式(Null Object)
设计模式 - 免费 - Sunrise - - 浏览量: 8
空对象模式不属于 GoF 设计模式,但是它作为一种经常出现的套路足以被视为设计模式了。它具有如下优点: 客户端代码简单 可以减少报空指针异常的几率 测试用例不需要考虑太多条件
备忘录模式(Memento)
设计模式 - 免费 - Sunrise - - 浏览量: 9
它提供了在不破坏封装(对象不需要具有返回当前状态的函数)的情况下恢复到之前状态(使用回滚)或者获取对象的内部状态。备忘录模式使用 3 个类来实现:Originator,Caretaker 和 Memento。
中介者模式(Mediator)
设计模式 - 免费 - Sunrise - - 浏览量: 6
本模式提供了一种轻松的多组件之间弱耦合的协同方式。如果你有个 “情报中心”,观察者模式也是个好选择,类似于控制器(并非 MVC 意义上的控制器)。 所有关联协同的组件(称作 Colleague)仅与 MediatorInterface 接口建立耦合,面向对象编程中这是好事,一个良友胜于有多个朋友。这是该模式的重要特性。
命令行模式(Command)
设计模式 - 免费 - Sunrise - - 浏览量: 11
为了封装调用和解耦。 我们有一个调用程序和一个接收器。 这种模式使用「命令行」将方法调用委托给接收器并且呈现相同的「执行」方法。 因此,调用程序只知道调用「执行」去处理客户端的命令。接收器会从调用程序中分离出来。
责任链模式(Chain Of Responsibilities)
设计模式 - 免费 - Sunrise - - 浏览量: 7
建立一个对象链来按指定顺序处理调用。如果其中一个对象无法处理命令,它会委托这个调用给它的下一个对象来进行处理,以此类推。
注册模式(Registry)
设计模式 - 免费 - Sunrise - - 浏览量: 7
目的是能够存储在应用程序中经常使用的对象实例,通常会使用只有静态方法的抽象类来实现(或使用单例模式)。需要注意的是这里可能会引入全局的状态,我们需要使用依赖注入来避免它。
代理模式(Proxy)
设计模式 - 免费 - Sunrise - - 浏览量: 11
代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问。使用代理模式创建代理对象,让代理对象控制目标对象的访问(目标对象可以是远程的对象、创建开销大的对象或需要安全控制的对象),并且可以在不改变目标对象的情况下添加一些额外的功能。