设计模式
文章平均质量分 90
许夜3
这个作者很懒,什么都没留下…
展开
-
设计模式之——责任链模式
一、基本介绍责任链模式(行为型):为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。二、包含角色1.抽象处理者角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。2.具体处理者角色:实现抽象处理者的处理方法,判断能否处理本次请求,如果可以处理请求则处...原创 2020-01-12 21:16:57 · 1233 阅读 · 0 评论 -
设计模式之——策略模式
一、基本介绍策略模式:定义了一系列算法,并将每个算法封装起来,让它们之间可以互相替换,让算法的变化独立于使用算法的客户。二、包含角色1.抽象策略类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法。2.具体策略类:实现了抽象策略定义的接口,提供具体的算法实现。3.环境类:持有一个策略类的引用,让给客户端调用。三、案例及UML类图...原创 2020-01-12 20:07:55 · 997 阅读 · 0 评论 -
设计模式之——状态模式
一、基本介绍状态模式(行为型):对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。二、包含角色1.环境角色:上下文,它定义了客户感兴趣的接口,维护一个当前状态,并将与状态相关的操作委托给当前状态对象来处理。2.抽象状态角色:定义一个接口,用以封装环境对象中的特定状态所对应的行为。3.具体状态角色:实现抽象状态所对应的行为。...原创 2020-01-12 19:21:03 · 1055 阅读 · 0 评论 -
设计模式之——备忘录模式
一、基本介绍备忘录模式(行为型):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。二、包含角色1.发起人角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。2.备忘录角色:负责存储发起人的内部状态,在需要的时候提供这些内部状态给发起人。...原创 2020-01-12 17:53:48 · 1109 阅读 · 0 评论 -
设计模式之——中介者模式
一、基本介绍中介者模式(行为型):定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。二、包含角色1.抽象中介者:中介者的公共接口定义,并提供了同事类消息传递的方法。2.具体中介者:实现抽象中介者接口,负责协调同事类之间的通信。3.抽象同事类:定义同事类的公共接口,提供同事对象交互的抽象方法,实现所有相互影响的同事类的公共功能。...原创 2020-01-12 16:35:43 · 1051 阅读 · 0 评论 -
设计模式之——观察者模式
一、基本介绍观察者模式(行为型):指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,也叫订阅—发布模式。二、包含角色1.主题(监视)角色:提供了一个用于保存观察者对象的聚集类和增加、删除观察者对象的方法,并在监视到变化时通知所有观察者的更新方法。2.抽象观察者角色:定义了一个更新自己的方法的接口,当接到更改通知时被调用。3....原创 2020-01-12 15:33:39 · 1071 阅读 · 0 评论 -
设计模式之——迭代器模式
一、基本介绍迭代器模式(行为型):提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。二、包含角色1.抽象聚合角色:定义存储、添加、删除对象以及获取迭代器对象的接口。2.具体聚合角色:实现抽象聚合类,返回一个具体迭代器的实例。3.抽象迭代器角色:定义访问和遍历聚合元素的接口,通常包含 hasNext()、next() 等方法。4.具体迭代器角色:实现抽...原创 2020-01-12 12:32:29 · 1102 阅读 · 0 评论 -
设计模式之——访问者模式
一、基本介绍访问者模式(行为型):将数据操作和数据结构分离的设计模式,即不直接去操作数据,通过中间一个数据结构去操作数据。二、包含角色1.抽象访问者:定义一个访问具体元素的接口,为每个具体元素类对应一个访问操作 ,该操作中的参数类型标识了被访问的具体元素。2.具体访问者:实现抽象访问者角色中声明的各个访问操作,确定访问者访问每一个具体元素该进行什么样的操作。3.抽象元素角色:声...原创 2020-01-10 12:53:33 · 1801 阅读 · 0 评论 -
设计模式之——命令模式
一、基本介绍命令模式(行为型):将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开(解耦)。二、包含角色1.抽象命令角色:声明执行命令的接口,拥有执行命令的抽象方法 execute()。2.具体命令角色:是抽象命令类的具体实现类,它拥有接收者对象,并通过调用接收者的功能来完成命令要执行的操作。3.接收者:执行命令功能的相关操作,是具体命令对象业务的真正实现者。...原创 2020-01-10 00:08:55 · 1719 阅读 · 0 评论 -
设计模式之——模板方法
一、基本介绍模板方法(行为型):定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。二、包含角色1.抽象类:负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。2.具体子类:实现抽象类中所定义的抽象方法和钩子方法。三、案例及UML类图案例说明: 泡茶的大体步骤基本差不...原创 2020-01-09 17:06:02 · 1653 阅读 · 0 评论 -
设计模式之——代理模式
一、基本介绍代理模式:给某些对象提供一个代理对象,以控制对这些对象的访问,或对这些对象进行与业务无关的增强操作。二、包含角色1.抽象主题类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。2.真实主题类:实现了抽象主题中的具体业务,是代理对象所代表的真实对象,即被代理对象。3.代理类:提供了与真实主题相同的接口,其内部含有对真实主题的引用,它可以访问、控制或扩展真实主题的...原创 2020-01-09 16:15:33 · 2223 阅读 · 0 评论 -
设计模式之——享元模式
一、基本介绍享元模式(结构型):运用共享技术来有効地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。二、包含角色1.抽象享元角色:为具体享元规范需要实现的公共接口,非享元的外部状态以参数的形式通过方法传入。2.具体享元角色:实现抽象享元角色中所规定的接口,为需要共享的对象。3.非享元角色:不共享的...原创 2020-01-09 14:50:03 · 1952 阅读 · 0 评论 -
设计模式之——外观模式
一、基本介绍外观模式(结构型):对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。二、包含角色1.外观角色:为子系统对外提供一个共同的接口。2.子系统角色:实现系统的部分功能,客户可以通过外观角色访问它。三、案例及UML类图案例说明: 动物接口定义了吃睡跑三个功能,让各个不同的动物实...原创 2020-01-09 13:37:45 · 1548 阅读 · 0 评论 -
设计模式之——组合模式
一、基本介绍组合模式(结构型):又叫部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。二、包含角色1.抽象构件角色:它的主要作用是为树叶构件和树枝构件声明公共接口,并实现它们的默认行为。2.树叶构件角色:是组合中的叶节点对象,它没有子节点,是树枝构件的子节点。3.树枝构件角色:是组合中的分支节点对...原创 2020-01-09 13:16:45 · 1449 阅读 · 0 评论 -
设计模式之——装饰器模式
一、基本介绍装饰器模式(结构型):在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,即对核心功能进行拓展。二、包含角色1.抽象构件角色:定义一个抽象接口以规范准备接收附加责任的对象。2.具体构件角色:实现抽象构件,该角色提供核心功能,被包装的角色。3.抽象装饰角色:继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。4.具...原创 2020-01-09 11:10:37 · 1375 阅读 · 0 评论 -
设计模式之——桥接模式
一、基本介绍桥接模式(结构型):将实现和抽象放在两个不同的类层次,使两个层次都可以独立的变化。二、包含角色1.抽象化角色:抽象化角色,包含对实现化抽象的引用。2.拓展抽象化角色:抽象化角色的子类,实现父类中的业务方法,并调用其它具体实现化角色。3.实现化角色:定义实现化角色的接口,供扩展抽象化角色调用。4.具体实现化角色:给出实现化角色接口的具体实现。三、案例及UML类...原创 2020-01-08 23:13:37 · 1488 阅读 · 0 评论 -
设计模式之——适配器模式
一、基本介绍适配器模式(结构型):让因接口不匹配而不能一起工作的类通过适配器转换后,客户端只需要调用适配器的接口就能让原来不能一起工作的接口协同工作,适配器模式主要是为了解决兼容性的问题,即将多个类的接口都转换为客户端所期望的一个接口。二、包含角色1.目标接口:客户端所期望的统一接口。2.适配者:需要被适配的类。3.适配器:它是一个转换器,把适配者转换为目标接口。三、案例及...原创 2020-01-08 22:45:24 · 1390 阅读 · 0 评论 -
设计模式之——建造者模式
一、基本介绍建造者模式(创建型):指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。二、包含角色1.指挥者:它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,即构建搭建步骤。2.产品角色:包含多个组成部件的复...原创 2020-01-08 20:04:24 · 2300 阅读 · 0 评论 -
设计模式之——原型模式(克隆模式)
一、基本介绍原型模式(创建型):用一个已经创建好的对象作为原型,通过复制该原型对象创建出相同或相似的对象。二、包含角色1.抽象原型类:规定了具体原型对象必须实现的接口。2.具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。三、案例及UML类图案例说明: 当做试卷的时候,我们需要抄别人的试卷,则需要复制对原来的...原创 2020-01-08 18:31:07 · 2368 阅读 · 0 评论 -
设计模式之——抽象工厂模式
一、基本介绍抽象工厂模式(创建型):是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构,总而言之,抽象工厂模式用于创建一系列相关的产品族。二、包含角色1.抽象工厂:提供了创建产品的接口,每个具体工厂的父类接口,可以创建多个不同等级的产品。2.具体工厂:抽象工厂的实现类,负责创建具体的产品。3.抽象角色:...原创 2020-01-08 17:38:39 · 1726 阅读 · 0 评论 -
设计模式之——工厂方法模式
一、基本介绍工厂方法模式(创建型):定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。二、包含角色1.抽象工厂:提供了创建产品的接口,每个具体工厂的父类接口。2.具体工厂:抽象工厂的实现类,负责创建具体的产品。3.抽象角色:需要定义产品的抽象,为工厂创建出来实例的公共接口。4.具体产品...原创 2020-01-08 14:48:20 · 1761 阅读 · 0 评论 -
设计模式之——简单工厂模式
一、基本介绍简单工厂模式:是一种传递简单的信息到工厂,由工厂对象决定创建出哪一种产品的类实例的模式。二、包含角色1.工厂角色:负责根据客户端传递的信息创建其对应的实例对象。2.抽象角色:需要定义产品的抽象,为工厂创建出来实例的公共接口。3.具体产品:抽象角色的实现类,由工厂返回的具体产品实例。三、案例及UML类图案例说明: 某个客户需要不同种类...原创 2020-01-08 12:44:15 · 1703 阅读 · 0 评论 -
设计模式之——单例模式
一、基本介绍单例模式(创建型):采用一定的方式保证在整个软件系统中,对某个类只存在一个对象实例,并提供一个取得该实例对象的方法(静态方法)。二、包含角色1.单例类:包含一个实例且能自行创建这个实例的类,并提供获取这个实例的方法。2.访问类:使用单例类的类。三、案例及UML类图UML类图:方式一:懒汉模式(静态常量)代码:public class...原创 2020-01-08 12:11:13 · 1854 阅读 · 0 评论 -
设计模式之——六大原则和UML类图简介
一、六大原则设计模式的原则是程序员在编写代码时应该遵守的原则,类似于规范,也是设计模式的基础。当然理论上需要遵守,实际开发中会遇到各种各样的情况,也可以对六大原则进行选择性的遵守。六大原则分别为:单一职责原则、里式替换原则、依赖倒转原则、接口隔离原则、迪米特法则、开放—封闭原则。单一职责原则:定义:对一个类而言,应该仅有一个引起它变化的原因,即一个类应该只负责一项职责。...原创 2019-12-22 22:27:19 · 3196 阅读 · 0 评论 -
设计模式之——简介
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的,其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。简单来说设计模式就是OPP(面向)编程中解决各种问题的一套方案。它不针对于任何语言,只要是面向对象的编程方式它都适用,如c++、java、python等都可以使用设计模...原创 2019-12-22 19:30:50 · 2827 阅读 · 0 评论 -
设计模式——抽象工厂
1.抽象工厂 什么是抽象工厂?简单的来说,抽象工厂是对具体工厂的抽象,它只负责产品的创建,并不负责产品的具体实现,而产品的具体实现是由实现该抽象工厂的具体工厂来完成。 2.举例:电子产品工厂 就拿我们常见的电子产品来做一个抽象工厂的讲解,生活中常见的电子品牌有苹果、小米、华为、魅族等,它们都有自己许多种类相似的产品,如苹果有苹果手机、苹果平板、苹果耳机等等,小米也有...原创 2019-02-24 12:49:11 · 2754 阅读 · 0 评论