设计模式
Pro_Vinny
Do something more valuable
展开
-
设计模式之——面向对象的六大原则
一、 单一职责原则 定义:Single Responsibility Principle,即SRP:一个类应该是相关性很高的方法与数据的封装,不同的职责应该分别封装到不同的类或模块当中。 原理:如果一个类的职责过多,就等于这些职责耦合了在一起,这样会使得设计容易变得脆弱,当发生变化时,设计容易发生非意料性的破坏。所以设计的时候应该遵守单一职责原则,其实它的核心就是解耦和内聚性的原创 2015-12-27 11:36:37 · 15699 阅读 · 0 评论 -
【迭代器模式】—— 数据的遍历
迭代器模式,提供了接口访问容器中的元素,而不需要暴露容器的内部表现。一、关键点1)先看下这个模式点关键点:遍历:该模式的最大特点就是提供了遍历内部集合数据的接口,从而达到访问集合数据的目的;解耦:该模式以迭代器的身份去实现遍历集合对象的目的,从而不需要暴露内部的表示,达到了解耦的目的。 2)我们再看下它的类图关系:Iterator:迭代器接口;Concret...原创 2018-09-16 17:37:34 · 756 阅读 · 0 评论 -
【观察者模式】—— 订阅与发布
观察者模式,定义了一对多的关系,使得当对象状态改变时,其他目标对象会收到通知,并被自动更新。一、关键点1)先看下这个模式点关键点:监听:该模式的比较一个大大特点就是多对一的关系,即常说的 “订阅 — 发布” 的关系;解耦:该模式的重要作用就是解耦,即做到观察者和被观察者之间的无依赖。 2)我们再看下它的类图关系:Subject:抽象对象,即被观察的角色;Co...原创 2018-09-02 23:16:11 · 247 阅读 · 0 评论 -
【状态模式】—— 描述行为变化
状态模式,当一个对象的内部状态改变时它的行为也允许改变,这个对象看起来像是改变了它的类。一、关键点1)先看下这个模式点关键点:行为描述:该模式把对象的行为定义在不同的状态对象里,并通过状态的变化来改变行为;指针:状态模式的一个比较明显的特点就是状态间的关系类似于指针的关系,即根据条件的不同,当前指向的行为对象也不一样,这个模式也常常用于设计状态机模型。 2)我们再来看下...原创 2018-08-26 15:00:15 · 437 阅读 · 0 评论 -
【责任链模式】—— 责任处理分级与解耦
责任链 模式,将处理请求的对象链接成一条链,并根据链来传递请求,让符合条件的对象来处理请求。一、关键点1)先看下这个模式点关键点:业务处理链: 该模式就是将处理请求的对象按照一定的条件串成来“链子”,从“链子”的指定节点开始,按条件“递归执行”;分级与解耦:该“链子”是按照一定的条件进行来“分级”,从而即能让“链子”间灵活的调用,调用者不需要关系“链”的执行机制,从而达到解耦的...原创 2018-08-19 22:19:33 · 622 阅读 · 0 评论 -
【享元模式】—— 对象的复用
享元模式,通过共享对象的方式有效地支持大量细粒度的对象。一、关键点1)先看下这个模式点关键点:对象池:该模式的最大特点就是实现对象的缓存,以避免对象的重复创建,从而达到提升性能和内存使用优化的目的;状态外部化:为实现该模式,另外的一个特点就是状态外部化,以方便缓存对象的访问。 2)我们再来看下它的类图关系: FlyweightFactory:享元工厂,管理享...原创 2018-08-26 17:20:06 · 940 阅读 · 0 评论 -
【策略模式】—— 灵活的算法集
策略模式,定义与封装了一系列的算法,并能相互间进行替换,且独立于使用者进行变化。一、关键点1)先看下这个模式点关键点:算法集: 该模式根据业务定义了一系列的算法,进行了特殊的封装,相互间能相互替换,并能进行灵活的拓展;独立变化:该模式的一个比较明显的特点就是独立于客户端的变化,而不依赖与客户端,灵活地进行升级与策略实现。 2)我们再来看下它的类图关系:Conte...原创 2018-08-19 17:17:30 · 354 阅读 · 0 评论 -
【工厂方法模式】—— 广泛应用的模式
工厂方法模式,一种对象创建型的设计模式,提供创建对象的接口,让子类决定要实例化的对象。通过依赖注入的方式达到解耦、复用的目的。一、关键点1)我们先来说下这个设计模式的关键点,“简单工厂” 和 “依赖注入”, 对,就这两个。“简单工厂” :和简单工厂类似,该模式也是按需实例所需要的对象;“依赖注入” :在 “简单工厂” 对基础上,这个模式对不同点是将对象的选择判断移到了调用者中,...原创 2018-08-12 13:39:00 · 217 阅读 · 0 评论 -
【命令模式】—— 请求与执行解耦
命令模式,将行为实现抽象成对象,并使其与请求者解耦,并能对行为进行纪录、撤销、事务等操作。一、关键点1)我们先看下这个模式的关键点:行为与请求解耦:将一组行为抽象成对象,使之与请求者解耦开来,区别与之前请求者与行为的直接耦合,从而给控制的灵活变化带来了机会,并更容易对模块进行拓展;灵活控制:支持对命令对象的排队、取消、修改、事务等功能,整个执行过程变得更加灵活。2)我们再来...原创 2018-08-19 15:42:17 · 462 阅读 · 0 评论 -
【建造者模式】—— 构建与表现分离
建造者模式,将复杂对象的创建过程与它的表示分离,即容许用户在不知道对象内部细节的情况下,一步步创建对象的过程。并使得同样的构建过程可以创建不同的表示。一、关键点1)我们先来看下这个模式的关键点:构建与表现分离:这是找个模式的比较明显的特征,即将构建负责对象的过程与它的部件解耦了;构建过程:由于第一个特征,表现和构建分离,这样就使得同样的构建过程可以创建不同的表示。也能根据需要控...原创 2018-08-12 18:37:16 · 1054 阅读 · 0 评论 -
【单例模式】—— 最常用的模式
在我们实际的开发过程中,最经常用到的设计模式,应该属于—— 单例模式 了吧。一、定义它是这样的定义的:保证一个类仅有一个实例,并提供一个访问它的全局访问入口。它的定义也非常简单,我们可以稍微整理下:如上图,其实定义就两个点:仅一个实例、确保它是唯一的。 二、实现上面简单描述了单例模式的定义,但在实际实现的过程中,大概需要注意以下几点:1)构造函数私有化。如果...原创 2018-08-05 22:30:38 · 310 阅读 · 0 评论 -
【代理模式】—— 业务中介
代理模式,提供了控制目标对象的访问接口。一、关键点1)先看下这个模式点关键点:中介: 该模式的主要特点就是实现了中介的效果,委托者处理了被委托者的事务,以中介的形式对外提供访问的接口;解耦:因为该模式的是以中介的形式进行的,这样就将委托者和被委托者解耦开来了,从而达到保护被委托者的目的。 2)我们再看下它的类图关系:Subject: 被为类的抽象对象;Rea...原创 2018-09-17 11:26:57 · 336 阅读 · 0 评论