
设计模式
文章平均质量分 91
用java来编写
zhixuChen200
打代码 打篮球
展开
-
设计之终道
文章目录终道单一职责开闭原则里氏替换接口隔离依赖倒置迪米特法则设计的最高境界终道在面向对象的软件设计中,人们经常会遇到一些重复出现的问题。为降低软件模块的耦合性,提高软件的灵活性、兼容性、可复用性、可维护性与可扩展性,人们从宏观到微观对各种软件系统进行拆分、抽象、组装,确立模块间的交互关系,最终通过归纳、总结,将一些软件模式沉淀下来成为通用的解决方案,这就是设计模式的由来与发展。设计模式是以语言特性(面向对象三大特性)为“硬件基础”,再加上软件设计原则的“灵魂”而总结出的一系列软件模式。一般地,这些原创 2023-01-13 15:12:05 · 452 阅读 · 0 评论 -
行为篇-解释器模式
文章目录前言一、语言与表达式二、语义树1. 脚本定义三、接口与终极表达式1. 表达式接口2.终极表达式3.非终极表达式4.客户端类总结前言解释有拆解、释义的意思,一般可以理解为针对某段文字,按照其语言的特定语法进行解析,再以另一种表达形式表达出来,以达到人们能够理解的目的。类似地,解释器模式(Interpreter)会针对某种语言并基于其语法特征创建一系列的表达式类(包括终极表达式与非终极表达式),利用树结构模式将表达式对象组装起来,最终将其翻译成计算机能够识别并执行的语义树。例如结构型数据库对查询语原创 2023-01-13 13:57:09 · 447 阅读 · 0 评论 -
行为篇-访问者模式
文章目录前言一、多样化的商品1.商品抽象类2.糖果类、酒类、水果类二、多变的计价方法1. 访问者接口2.折扣计价访问者3.客户端类三、访问和承接1. 接待者接口2.重构糖果类3.客户端类总结前言访问者模式(Visitor)主要解决的是数据与算法的耦合问题,尤其是在数据结构比较稳定,而算法多变的情况下。为了不“污染”数据本身,访问者模式会将多种算法独立归类,并在访问数据时根据数据类型自动切换到对应的算法,实现数据的自动响应机制,并且确保算法的自由扩展。提示:以下是本篇文章正文内容,下面案例可供参考原创 2023-01-12 11:44:34 · 384 阅读 · 0 评论 -
行为篇-命令模式
文章目录前言一、对电灯的控制1.灯泡类2.开关类3.客户端类二、 开关命令1.命令接口2.开关命令类3.开关类4.客户端类三、 霓虹灯闪烁1.闪烁命令类2.客户端类四、物联网1.电视机类2.电视命令类3.键盘控制器类Keyboard4.客户端类总结前言命令是一个对象向另一个或多个对象发送的指令信息。命令的发送方负责下达指令,接收方则根据命令触发相应的行为。作为一种数据(指令信息)驱动的行为型设计模式,命令模式(Command)能够将指令信息封装成一个对象,并将此对象作为参数发送给接收方去执行,以使命令原创 2023-01-10 14:49:02 · 709 阅读 · 0 评论 -
行为篇-中介者模式
文章目录前言一、简单直接交互1.人类People2.客户端类二、 构建交互平台1.用户类2.聊天室类3.客户端类三、 多态化沟通1.聊天室抽象类和用户类2.用户类3.公共聊天室类4.私人聊天室类5.超级用户类6.客户端类总结前言中介是在事物之间传播信息的中间媒介。中介模式(Mediator)为对象构架出一个互动平台,通过减少对象间的依赖程度以达到解耦的目的。我们的生活中有各种各样的媒介,如婚介所、房产中介、门户网站、电子商务、交换机组网、通信基站、即时通软件等,这些都与人类的生活息息相关,离开它们我原创 2023-01-09 14:44:38 · 220 阅读 · 0 评论 -
行为篇-备忘录模式
文章目录前言一、时光流逝二、 覆水难收1.文档类2编辑器类3.客户端类三、破镜重圆1.历史快照类2.重构文档类3.重构编辑器类4.客户端类总结前言备忘录用来记录曾经发生过的事情,使回溯历史变得切实可行。备忘录模式(Memento)则可以在不破坏元对象封装性的前提下捕获其在某些时刻的内部状态,并像历史快照一样将它们保留在元对象之外,以备恢复之用。提示:以下是本篇文章正文内容,下面案例可供参考一、时光流逝在计算机世界中,我们似乎可以来去自如,例如浏览器前进与后退、撤销文档修改、数据库备份与恢复、原创 2023-01-06 14:09:09 · 781 阅读 · 0 评论 -
行为篇-策略模式
文章目录前言一、“顽固不化”的系统1.计算器类二、游戏卡带1.算法策略接口2.具体策略类3.重构计算器类4.客户端类三、万能的USB接口1.USB接口2.策略实现类3.计算机主机类4.客户端类总结前言策略,古时也称“计”,指为了达成某个目标而提前策划好的方案。但计划往往不如变化快,当目标突变或者周遭情况不允许实施某方案的时候,我们就得临时变更方案。策略模式(Strategy)强调的是行为的灵活切换,比如一个类的多个方法有着类似的行为接口,可以将它们抽离出来作为一系列策略类,在运行时灵活对接,变更其算法原创 2023-01-05 11:19:53 · 440 阅读 · 0 评论 -
行为篇-责任链模式
文章目录前言一、简单的生产线二、工作流程拆分1.业务实现2.客户端类三、架构工作流1.审批人2.审批角色3.客户端类总结前言责任链是由很多责任节点串联起来的一条任务链条,其中每一个责任节点都是一个业务处理环节。责任链模式(Chain of Responsibility)允许业务请求者将责任链视为一个整体并对其发起请求,而不必关心链条内部具体的业务逻辑与流程走向,也就是说,请求者不必关心具体是哪个节点起了作用,总之业务最终能得到相应的处理。在软件系统中,当一个业务需要经历一系列业务对象去处理时,我们可以原创 2022-12-27 14:36:15 · 456 阅读 · 1 评论 -
行为篇-迭代器模式
文章目录前言一、物以类聚二、遍历标准化三、手写迭代器1.定义迭代器2.行车记录仪类3.客户端类总结前言迭代,在程序中特指对某集合中各元素逐个取用的行为。迭代器模式(Iterator)提供了一种机制来按顺序访问集合中的各元素,而不需要知道集合内部的构造。换句话讲,迭代器满足了对集合迭代的需求,并向外部提供了一种统一的迭代方式,而不必暴露集合的内部数据结构。提示:以下是本篇文章正文内容,下面案例可供参考一、物以类聚迭代的过程是基于一系列数据展开的,所以集合是不得不提的概念。物以类聚,集合是由一个原创 2022-12-27 11:22:09 · 572 阅读 · 0 评论 -
结构篇-桥接模式
文章目录前言一、基础建设二、形与色的纠葛1.画笔抽象类2.黑色画笔类3.客户端类三、架构产业链1.尺子接口2.具体实现3.画笔抽象类4.画笔实现类5.客户端类四、笛卡尔积总结前言桥接模式(Bridge)能将抽象与实现分离,使二者可以各自单独变化而不受对方约束,使用时再将它们组合起来,就像架设桥梁一样连接它们的功能,如此降低了抽象与实现这两个可变维度的耦合度,以保证系统的可扩展性。提示:以下是本篇文章正文内容,下面案例可供参考一、基础建设人类社会的发展有一条不变的规律,即“要致富,先修路”。路原创 2022-12-26 15:23:30 · 677 阅读 · 0 评论 -
结构篇-代理模式
文章目录前言一、4S店二、访问互联网1.互联网访问接口2.“猫”三、互联网代理1. 路由器2.客户端类四、万能的动态代理1.局域网访问接口2.交换机3.动态代理4.改进后的路由代理5.客户端6.扩展总结前言代理模式(Proxy),顾名思义,有代表打理的意思。某些情况下,当客户端不能或不适合直接访问目标业务对象时,业务对象可以通过代理把自己的业务托管起来,使客户端间接地通过代理进行业务访问。如此不但能方便用户使用,还能对客户端的访问进行一定的控制。简单来说,就是代理方以业务对象的名义,代理了它的业务。原创 2022-12-26 11:21:26 · 169 阅读 · 0 评论 -
结构篇-享元模式
享元模式原创 2022-12-21 14:09:25 · 616 阅读 · 0 评论 -
结构篇-适配器模式
设计模式原创 2022-12-20 14:57:37 · 1212 阅读 · 0 评论 -
结构篇-装饰器模式
文章目录一、从素面朝天到花容月貌1.展示行为2.女生类3.装饰器4.客户端类二、化妆品的多样性1. 装饰器抽象类2.装饰器实现3.客户端类三、无处不在的装饰器装饰指在某物件上装点额外饰品的行为,以使其原本朴素的外表变得更加饱满、华丽,而装饰器(装饰者)就是能够化“腐朽”为神奇的利器。装饰器模式(Decorator)能够在运行时动态地为原始对象增加一些额外的功能,使其变得更加强大。从某种程度上讲,装饰器非常类似于“继承”,它们都是为了增强原始对象的功能,区别在于方式的不同,后者是在编译时(compile-原创 2022-12-16 17:16:42 · 155 阅读 · 0 评论 -
结构篇-组合模式
文章目录一、叉树结构二、文件系统1. 抽象节点类Node2.文件夹类3.文件类4.客户端类三、目录树展示1.添加展示方法2.改写文件夹类3.输出结果总结组合模式(Composite)是针对由多个节点对象(部分)组成的树形结构的对象(整体)而发展出的一种结构型设计模式,它能够使客户端在操作整体对象或者其下的每个节点对象时做出统一的响应,保证树形结构对象使用方法的一致性,使客户端不必关注对象的整体或部分,最终达到对象复杂的层次结构与客户端解耦的目的。提示:以下是本篇文章正文内容,下面案例可供参考一、叉原创 2022-12-16 14:11:44 · 492 阅读 · 0 评论 -
创建篇-建造者模式
文章目录前言一、建造步骤的重要性二、建房子1. 建筑物类2.建筑施工方3.工程总监4.项目实施总结前言建造者模式(Builder)所构建的对象一定是庞大而复杂的,并且一定是按照既定的制造工序将组件组装起来的,例如计算机、汽车、建筑物等。我们通常将负责构建这些大型对象的工程师称为建造者。建造者模式又称为生成器模式,主要用于对复杂对象的构建、初始化,它可以将多个简单的组件对象按顺序一步步组装起来,最终构建成一个复杂的成品对象。与工厂系列模式不同的是,建造者模式的主要目的在于把烦琐的构建过程从不同对象中抽离原创 2022-12-15 16:13:58 · 757 阅读 · 0 评论 -
创建篇-抽象工厂模式
文章目录前言一、品牌与系列二、产品规划1. 游戏建模2.兵种抽象类3.具体的兵种三、生产线规划1.工厂标准制定2. 具体工厂类3.客户端类四、分而治之总结前言抽象工厂模式(Abstract Factory)是对工厂的抽象化,而不只是制造方法。我们知道,为了满足不同用户对产品的多样化需求,工厂不会只局限于生产一类产品,但是系统如果按工厂方法那样为每种产品都增加一个新工厂又会造成工厂泛滥。所以,为了调和这种矛盾,抽象工厂模式提供了另一种思路,将各种产品分门别类,基于此来规划各种工厂的制造接口,最终确立产品原创 2022-12-14 14:41:29 · 320 阅读 · 0 评论 -
创建篇-工厂模式
文章目录前言一、工厂的多元化与专业化二、游戏角色建模1. 敌人抽象类2.敌机类3.坦克类三、简单工厂1.客户端2. 简单工厂类3.改写客户端类四、制定工业制造标准1. 工厂接口2.产品拆分3.加入Boss类4.改写客户端类总结前言制造业是一个国家工业经济发展的重要支柱,而工厂则是其根基所在。程序设计中的工厂类往往是对对象构造、实例化、初始化过程的封装,而工厂方法(Factory Method)则可以升华为一种设计模式,它对工厂制造方法进行接口规范化,以允许子类工厂决定具体制造哪类产品的实例,最终降低系原创 2022-12-13 15:12:39 · 202 阅读 · 0 评论 -
创建篇-原型模式
文章目录前言一、飞机大战1.敌机类2.客户端类二、使用clone()方法来进行拷贝1.可被克隆的敌机类2.克隆工厂3.深拷贝和浅拷贝总结前言原型模式(Prototype),在制造业中通常是指大批量生产开始之前研发出的概念模型,并基于各种参数指标对其进行检验,如果达到了质量要求,即可参照这个原型进行批量生产。原型模式达到以原型实例创建副本实例的目的即可,并不需要知道其原始类,也就是说,原型模式可以用对象创建对象,而不是用类创建对象,以此达到效率的提升。提示:以下是本篇文章正文内容,下面案例可供参考原创 2022-12-13 09:27:07 · 418 阅读 · 0 评论 -
创建篇-单例模式
文章目录前言一、饿汉式二、懒汉式1.有缺陷的懒汉式2.改进后的懒汉式总结前言单例模式(Singleton)是一种非常简单且容易理解的设计模式。顾名思义,单例即单一的实例,确切地讲就是指在某个系统中只存在一个实例,同时提供集中、统一的访问接口,以使系统行为保持协调一致。singleton一词在逻辑学中指“有且仅有一个元素的集合”,这非常恰当地概括了单例的概念,也就是“一个类仅有一个实例”。提示:以下是本篇文章正文内容,下面案例可供参考一、饿汉式这就是“饿汉模式”(eager initializa原创 2022-12-01 11:28:49 · 87 阅读 · 0 评论