设计模式
文章平均质量分 67
设计模式
就是不掉头发
这个作者很懒,什么都没留下…
展开
-
设计模式之美(13)-行为型-职责链模式
模版模式、策略模式、职责链模式。这三种模式都具有相同的作用:复用和扩展,在实际的项目开发中比较常用,特别是框架开发。我们可以利用他们来提供框架的扩展点,能够让框架的使用者在不修改框架源码的情况下,基于扩展点定制化框架的功能。职责链模式的原理和实现职责链模式,将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,知道链上的某个接收对象能够处理它为止。职责链模式,有两种实现方式,一种是使用链表,一种是数组。如果职责链上的某个处理器能够处理这个请求,原创 2021-08-23 21:56:48 · 403028 阅读 · 0 评论 -
设计模式之美(12)-行为型-策略模式
策略模式的原理与实现策略模式(Strategy Design Pattern) 定义一组算法,将每个算法分别封装起来,让他们可以互相替换。策略模式可以使算法的变化独立于使用他们的客户端(这里的客户端代指使用算法的代码)。工程模式是结偶对象创建和使用,观察者模式是解耦观察者和被观察者。策略模式跟两者类似,也能起到解耦的作用,不过它的解耦是策略的定义、创建、使用这三部分。策略的定义策略的定义比较简单,包含一个策略接口和一组实现这个接口的策略类。因为所有的策略类都实现相同的接口,所以客户端代码基于接口而原创 2021-08-23 21:53:39 · 408725 阅读 · 1 评论 -
设计模式之美(11)-行为型-模版模式
模版模式的原理与实现模版模式,全称是模版方法设计模式,模版方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模版方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。这里的“算法”,可以理解为业务逻辑。public abstract class AbstractClass { public final void templateMethod() { //... method1(); //... method2(); //原创 2021-08-23 21:48:38 · 404665 阅读 · 0 评论 -
设计模式之美(10)-行为型-观察者模式
原理及应用场景剖析观察者模式(Observer Design Pattern)也被称为发布订阅模式,在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。被依赖的对象叫做被观察者(Observable),依赖的对象叫作观察者(Observer)观察者模式是一个比较抽象的模式,根据不同的场景和需求,又完全不同的实现方式。public interface Subject { void registerObserver(Observer observer); v原创 2021-08-23 21:46:35 · 401395 阅读 · 0 评论 -
设计模式之美(9)-结构型-门面模式
门面模式的原理与实现门面模式,也叫外观模式,Facade Design Pattern。门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。假设有一个系统A,提供了a、b、c、d四个接口。系统B完成某个业务功能,需要调用A系统的 a、b、d接口。利用门面模式,我们提供一个包裹 a、b、d接口调用的门面接口X,给系统B直接使用。也就是类似, 客户端的响应速度比较慢,排查之后发现,因为过多的接口调用过多的网络通信,针对这种情况,我们也可以利用门面模式,让后端服务器提供一个包裹 a、b、d原创 2021-08-23 21:44:53 · 407521 阅读 · 0 评论 -
设计模式之美(8)-结构型-适配器模式
适配器模式的原理与实现适配器模式(Adapter Design Pattern)。这个模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。适配器模式有两种实现方式:类适配器和对象适配器。类适配器使用继承关系来实现,对象适配器使用组合关系来实现。// 类适配器: 基于继承public interface ITarget { void f1(); void f2(); void fc();}public class Adap原创 2021-08-23 21:43:17 · 417995 阅读 · 3 评论 -
设计模式之美(7)-结构型-代理模式
结构型模式主要总结了一些类或对象组合在一起的经典结构,这些经典的结构可以解决特定应用场景的问题,包括:代理模式、桥接模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式。代理模式原理解析代理模式(Proxy Design Pattern),它在不改变原始类(或者叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。public class UserController { //...省略其他属性和方法... private MetricsCollector metricsColle原创 2021-08-23 21:40:33 · 404196 阅读 · 0 评论 -
设计模式之美(6)-创建型-原型模式
原型模式的原理与应用如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行赋值(或者叫拷贝)的方式来创建新对象,达到节省创建时间的目的。这种基于原型来创建的方式就叫作原型设计模式(Prototype Design Pattern),简称原型模式。为何“对象的创建成本比较大”实际上,创建对象包含申请内存、给成员变量赋值这一过程,本身并不会花费太多时间,但是,如果对象中的数据需要经过复杂的计算才能得到(比如排序、计算哈希),或者从原创 2021-08-23 21:37:28 · 403802 阅读 · 0 评论 -
设计模式之美(5)-结构型-代理模式
结构型模式主要总结了一些类或对象组合在一起的经典结构,这些经典的结构可以解决特定应用场景的问题,包括:代理模式、桥接模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式。代理模式原理解析代理模式(Proxy Design Pattern),它在不改变原始类(或者叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。public class UserController {//…省略其他属性和方法…private MetricsCollector metricsCollector; //原创 2021-08-22 17:57:19 · 409440 阅读 · 0 评论 -
设计模式之美(4)-创建型-建造者模式
Builder模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。建造者模式原理和代码非常简单, 难点在于应用场景。比如直接使用构造函数或者配合set方法就能创建对象,为什么还需要建造者模式来创建呢?建造者模式和工厂模式都可以创建对象,那他们的区别在哪里呢?为什么需要建造者模式?创建一个对象最常用的方式就是使用new关键字调用类的构造函数来完成,那么什么情况下这种方式就不适用了,就需要采用建造者模式来创建对象呢?假设有这样的需求:定义一个资源池配置类,有以下几个成员变量,是可配置项。现在原创 2021-08-22 17:50:36 · 405777 阅读 · 0 评论 -
设计模式之美(3)-创建型-工厂模式
工厂模式(Factory Design Pattern)工厂模式分为三种类型:简单工厂、工厂方法和抽象工厂。简单工厂(Simple Factory)首先看一段代码然后把代码整理成简单工厂。public class RuleConfigSource {public RuleConfig load(String ruleConfigFilePath) {String ruleConfigFileExtension = getFileExtension(ruleConfigFilePath);IRu原创 2021-08-22 17:47:15 · 410597 阅读 · 0 评论 -
设计模式之美(2)-创建型-单例模式
单例设计模式(Singleton Design pattern)理解起来非常简单。一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。如何实现一个单例?要实现一个单例。我们需要关注的如下几个点:构造函数需要是private访问权限的,这样才能避免如何实现一个单例?要实现一个单例。我们需要关注的如下几个点:1.外部通过new创建实例;2.考虑对象创建时的线程安全问题;3.考虑是否支持延迟加载;4.考虑 getInstance() 性原创 2021-08-22 17:44:10 · 403396 阅读 · 0 评论 -
设计模式之美(1)-面向对象、设计原则
面向对象面向对象概述现在主流的编程范式或编程风格有三种,分别是面向过程、面向对象和函数式编程。面向对象又是这其中最主流的,现在大部分编程语言都是面向对象编程语言。大部分项目也是基于面向对象风格开发的。面向对象拥有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。2. 面向对象四大特性“封装”,封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类的方法来访问内部信息或者数据。它需要编程语言提供全新访问控制机制的语法原创 2021-08-22 17:38:21 · 408672 阅读 · 0 评论