
设计模式
AI掘金
【履历】:电子科技大学,系统架构师,10年互联网金融研发、架构经验,互联网大厂全球业务xx板块研发团队负责人
【成就】:完成某独角兽公司支付系统迁移,重构某大厂履约体系,0-1建设某大厂全球合规运营架构
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计原则_单一职责
一、理解 单一职责原则的英文是Single Responsibility Principle ,简称SRP。一个接口、类、方法 尽量保持高效的完成一个职责,保证功能的可扩展性及降低类减的耦合度。 二、优势 类的复杂性降低,实现什么职责可以清晰明确的定义 复杂性降低,可读性提高 可维护性提高,可读性提高,便于维护 变更引起的风险降低,变更是必不可少的,如果接口的单一职责做好了,一个接口...原创 2018-09-02 18:10:49 · 116 阅读 · 0 评论 -
设计原则_里氏替换原则
一、理解 里氏替换原则(Liskov Substitution Principe ,LSP),只要父类能出现的地方子类就可以出现,而且替换为子类以后不会产生任何的错误或异常,使用者可能根本不需要知道是父类还是子类。但是反过来不行,有子类出现的地方,父类未必类适应。 里氏替换原则为良好的继承定义了一个规范,4层含义。 子类必须完全实现父类的方法,在类中调用其他类时务必要使用父类或接口...原创 2018-09-02 22:39:06 · 303 阅读 · 0 评论 -
设计原则_依赖倒置原则
一、理解 依赖倒置原则(Dependence Inversion Principle ,DIP),在java中具体表现如下: 模块间依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的; 接口或抽象类不依赖实现类; 实现类依赖接口或抽象类; 二、优势 依赖倒置原则是面向接口编程的核心表现,通过接口或抽象类是各个类或模块实现彼此独立,不相互影响,实现模块...原创 2018-09-02 23:17:53 · 170 阅读 · 0 评论 -
设计原则_接口隔离原则
一、理解 类间的依赖关系应该建立在最小的接口上,需要建立单一接口,不要建立臃肿庞大的接口,不使用的方法不要访问。尽量使用多个专用接口。 二、优势 定制服务,修改一个功能接口的时候,不会影响其它功能接口。 高内聚,接口会尽量少公布public方法。 三、劣势 虽然接口的粒度越小,系统越灵活,但需要有一个“度”。不能导致系统的结构复杂化,开发难度增加,可维护性降低。 根据接口隔离原...原创 2018-09-02 23:43:37 · 126 阅读 · 0 评论 -
设计原则_迪米特法则
一、理解 迪米特法则(Law of Demeter ,LoD)也称为最少知识原则(Least Knowlege Principle,LKP),虽然名字不同,但描述的是同一个规则:一个对象应该对其他对象有最少的了解。 二、优势 强调类间解耦,增强程序的复用性。 三、劣势 迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合,类的复用率才可以提高,其要求的结果就需要大量的转换类,导致...原创 2018-09-04 00:23:11 · 144 阅读 · 0 评论 -
设计原则_开闭原则
一、理解 应尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来完成变化,它是对软件实体未来事件而制定对现行开发设计进行约束的一个原则。 二、优势 开闭原则对测试非常有利,因为是通过扩展来实现业务逻辑的变化,而不是修改,单元测试的时候可以孤立测试,只要保证提供的方法正确就可以了,其它业务逻辑不用管。 开闭原则可以提高复用性,在面向对象设计中,所有的逻辑都是重原子逻辑组合而来的...原创 2018-09-04 00:48:57 · 159 阅读 · 0 评论 -
设计模式 _第一招式_单例模式
yi原创 2018-09-15 13:29:10 · 139 阅读 · 0 评论 -
设计模式 _第二招式_工厂方法模式
一、定义 工厂方法模式使用的频率非常高,在我们日常的开发中总能看到它的身影。其定义为:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工程方法使用一个类的实例化延迟到其子类。 二、代码演示 在工厂方法模式中, 抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义;Creater为抽象创建类,已经是抽象工程,具体如何创建产品类是由具体的实现工程ConcreteCreator...原创 2018-09-15 18:22:42 · 137 阅读 · 0 评论 -
设计模式 _第三招式_抽象工厂模式
一、定义 抽象工厂模式(Abstract Factory Pattern)是一种比较常用的模式,为创建一组相关或互相依赖的对象接口,而且无需指定他们的具体类。 二、代码演示 抽象工厂模式的通用类图如下: 抽象工厂模式是工厂方法模式的升级版本,在多个业务品种、业务分类时,通过抽象工厂模式产生类是一种非常好的解决方式。我们来看看抽象工厂的通用源代码,首先有两个相互影响的产品线,例如制造汽车...原创 2018-09-16 00:30:41 · 112 阅读 · 0 评论 -
设计模式 _第四招式_模版方法模式
一、定义 定义一个操作中的算法框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模版方法模式确实非常简单,仅使用了Java的继承机制,是一种应用非常广泛的模式。 模版方法模式通用类图如下: AbstractClass叫做抽象模版,它的方法可以分为两类: 基本方法: 基本方法也叫基本操作,是由子类实现的方法,并且在模版方法被调用。 模版方...原创 2018-09-16 13:34:47 · 153 阅读 · 0 评论 -
设计模式 _第五招式_建造者模式
一、定义 建造者模式(Builder Pattern)叫做生成器模式,将一个复杂对象的构建与它表示分离,使得同样的构造过程可以创建不同的表示,可以按照部件属性有序的创建对象。 二、代码演示 建造者模式通用类图 Product产品类 通常是实现了模版方法模式,也就是有模版方法和基本方法。 public class Product { public void doSom...原创 2018-09-16 18:09:20 · 145 阅读 · 0 评论 -
设计模式 _第六招式_代理模式
一、定义 代理模式也叫委托模式,为其它对象提供一种代理以控制对这个对象的访问,它是一项基本设计技巧。许多其他的设计模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式,在应用中,代理模式提供非常好的访问控制。在一些著名的开源软件中也经常见到它的身影,如Struts2 的from元素映射就采用了代理模式。 二、代码演示 - 代理模式通用类图 Subject抽象主体...原创 2018-09-16 22:46:19 · 138 阅读 · 0 评论 -
设计模式 _第六招式_代理模式(动态代理)
11原创 2018-10-03 16:30:20 · 130 阅读 · 0 评论 -
设计模式 _第七招式_原型模式
一、定义 用原型实例指定创建对象种类,并且通过拷贝这些原型创建新的对象。原型模式的核心是clone方法,通过该方法进行对象的拷贝,Java提供了一个Cloneable接口来标示这对象是可以拷贝的,为什么说是“标示”呢 ?JDK源码中Cloneable 接口是一个方法都没有,这个接口只是一个标记的作用,在jvm中具有这个标识才可能被拷贝,且类中必须要重新clone()方法,覆写了Object类中的c...原创 2018-10-04 17:36:22 · 132 阅读 · 0 评论 -
设计模式 _第八招式_中介者模式
一、定义 二、代码演示 三、优点 四、缺点 五、应用场景 六、注意事项原创 2018-10-04 19:18:33 · 150 阅读 · 0 评论 -
设计模式 _第十七招式_桥梁模式
一、定义 二、代码演示 2.1 通用类图 2.2 角色说明 State–抽象状态角色 接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。 ConcreteSate–具体状态角色 每一个具体状态必须要完成两个职责:本状态行为管理及趋向状态处理,通俗的说就是本状态要做的事情, 及如何过渡到其它状态。 Context–环境角色 定义客户端需要的接口,并且负责到状态的切换。 状态模式相...原创 2019-11-11 00:09:47 · 138 阅读 · 0 评论 -
设计模式 _第九招式_命令模式
一、定义 命令模式是一个高内聚的模式,其定义为:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化, 对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 二、代码演示 2.1 通用类图 2.2 角色定义 Receive接收者角色 该角色是干活的角色,命令传递到这里是应该被执行的。 Command命令角色 需要执行的所有命令都在这里声明。 Invoker调用者角色 接收并执行...原创 2018-12-09 20:48:21 · 173 阅读 · 0 评论 -
设计模式 _第十招式_责任链模式
一、定义 二、代码演示 三、优点 四、缺点 五、应用场景 六、注意事项原创 2018-12-09 23:14:57 · 140 阅读 · 0 评论 -
设计模式 _第十二招式_备忘录模式
一、定义 备忘录模式(Memento Pattern)提供了一种弥补真实世界缺陷的方法,让“后悔药”在程序的时间真实可行;在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象外部保存这个状态,这样以后就可将对象恢复到原先保存的状态。 二、代码演示 2.1 通用类图 2.2 角色说明 Originator抽象构建 记录当期时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数...原创 2019-09-14 19:41:32 · 167 阅读 · 0 评论 -
设计模式 _第十三招式_访问者模式
一、定义 封装一些作用于某种数据结构中的个元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新操作。 二、代码演示 2.1 通用类图 2.2 角色说明 Visitor(抽象访问者) 抽象类或者接口,声明访问者哪些可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对象是是可以被访问的。 ConcreteVisitor(具体访问者) 它影响访问者访问到一个对象以后该干什么,...原创 2019-09-16 00:22:08 · 142 阅读 · 0 评论 -
设计模式 _第十四招式_状态模式
一、定义 当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类,状态模式的核心是封装,状态的变更引起行为的变更,从外面看起来就像这个对象对应的类发生了改变一样。 二、代码演示 2.1 通用类图 2.2 角色说明 State–抽象状态角色 接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。 ConcreteSate–具体状态角色 每一个具体状态必须要完成两个职责:本状...原创 2019-09-22 00:24:42 · 150 阅读 · 0 评论 -
设计模式 _第十五招式_解释器模式
一、定义 解释器模式(Interpreter Pattern)是一种按照规定语法进行的解析方案,现在在项目中运用比较少。给定一门语音,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。 二、代码演示 2.1 通用类图 2.2 角色说明 AbstractExpression–抽象解释器 具体的解释任务由各个实现类完成,具体的解释器分别有TerminalExpress...原创 2019-09-23 00:15:47 · 159 阅读 · 0 评论 -
设计模式 _第十六招式_享元模式
一、定义 享元模式(Flyweight Pattern)是池技术的重要实现方式其定义如下:使用共享对象可以有效地支持大量的细粒度的对象。 享元模式的定义为我们提出列两个要求:细粒度对象和共享对象。我们知道分配太多的对象到应用程序中将有损程序的性能,同时还容易造成内存溢出,那怎么规避呢 ?就是享元模式提供的共享技术。 要求细粒度对象,则会导致对象的数量多且属性都非常相似,为了抽取相同的属性, 可以将...原创 2019-09-28 18:39:44 · 188 阅读 · 0 评论 -
设计模式 _第十一招式_装饰模式
一、定义 动态地给一个对象添加一些额外的职责。就增加功能,装饰模式比生成子类更灵活。 二、代码演示 2.1 通用类图 2.2 角色说明 Componet抽象构建 Componet是一个接口或者抽象类,及时我们定义最核心的对象,也是最原始的对象。 ConcreteComponent具体构建 ConcreteComponent 是最核心,最原始,最基本的几口或者抽象类的实现,要装饰的及时它。 De...原创 2018-12-12 23:10:30 · 159 阅读 · 0 评论