
设计模式
alim2012
这个作者很懒,什么都没留下…
展开
-
Matlab函数装饰器(Functional Decorator)
仿照python的装饰器https://www.runoob.com/w3cnote/python-func-decorators.html,本人写了一个matlab的装饰器:info.mfunction result_func= info(msg) function res_func =wrap(func) function varargout = inner...原创 2019-04-30 00:06:53 · 888 阅读 · 0 评论 -
Matlab组合模式(Composite)
组合模式(Composite),将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式的目的是让客户端不再区分操作的是组合对象(Composite)还是叶子对象(Leaf),而是以一个统一的方式来操作。实现这个目标的关键之处,是设计一个抽象的组件类,让它可以代表组合对象和叶子对象。这样一来,客户端就不用区分到底是组合对象还是叶子对象了,只...原创 2019-05-23 21:46:03 · 1832 阅读 · 0 评论 -
Matlab代理模式(Proxy)
代理模式(Proxy)就是给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用。代理模式和装饰模式非常类似,但最主要的区别是代理模式中,代理类对被代理的对象有控制权,决定其执行或者不执行。本文根据https://www.cnblogs.com/gonjan-blog/p/6685611.html给出的结构图,使用Matlab语言实现代理代理模式。Subject.mcl...原创 2019-05-28 17:32:59 · 2181 阅读 · 0 评论 -
Matlab中介者模式(Mediator)
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。想象一个乱糟糟的开发小组的工作状态,组员之间虽然在一起协同工作,但是意见难以统一,总是相互指挥,导致工作进度滞后。这时候,就需要一个仲裁者。所有的组员将自己的情况汇报给仲裁者,仲裁者会从团队的整体考虑,然后下达指令。仲裁者负责统...原创 2019-06-01 18:43:52 · 580 阅读 · 0 评论 -
Matlab享元模式(Flyweight)
享元模式(Flyweight)通过共享技术实现相同或相似对象的重用,可以减少创建对象的数量,以减少内存占用和提高性能。Java String的常量池,python logging,线程池,数据库连接池都用到了享元模式。享元模式与单例模式类似,都具有共享变量的特征。本文通过使用matlab语言对享元模式进行实现。IFlyweight.mclassdef IFlyweight < ha...原创 2019-05-29 23:36:28 · 191 阅读 · 0 评论 -
Matlab命令模式(Command)
命令模式(Command)将命令封装为对象,实现命令发送者和命令接收者的解耦。线程池、MVC框架用到了命令模式,本文根据以下类图,用matlab实现命令模式。Invoker.m (传递命令对象Invoker:持有命令对象,要求命令对象执行请求)classdef Invoker < handle properties command end ...原创 2019-06-08 00:43:21 · 3172 阅读 · 0 评论 -
Matlab桥接模式(Bridge)
桥接模式(Bridge)是一种结构型设计模式。它是用组合关系代替继承关系来实现,可以处理多维度变化的场景(https://blog.youkuaiyun.com/qq_31156277/article/details/80659537), 它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。桥接模式的UML图如...原创 2019-06-14 01:23:57 · 1620 阅读 · 0 评论 -
Matlab混入模式(Mixin)
Mixin是一种类,这种类包含了其他类要使用的方法,但不必充当其他类的父类。Matlab无疑是支持多继承的。我们可以利用 Matlab的这种特性,实现一种叫做 Mixin 的类。MixIn的目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个MixIn的功能,而不是设计多层次的复杂的继承关系。Automobile.mclassdef Automobil...原创 2019-06-18 22:48:46 · 361 阅读 · 0 评论 -
Matlab空对象模式(Null Object)
在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。AbstractObject.mclassdef AbstractObject < handle methods(Abstract) op...原创 2019-06-19 00:32:01 · 1112 阅读 · 0 评论 -
Matlab解释器模式(Interperter)
解释器模式(Interperter),给定一个语言,定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,实际开发中EL表达式或者正则表达式的解释器就是采用这种设计模式。其模式结构如下图。本文使用matlab语言,利用解释器模式来实现后缀表达式的解析。Context.m (环境类,包含解释器之外的一些全局信息)classdef Context < handle p...原创 2019-06-09 15:40:27 · 2116 阅读 · 0 评论 -
Matlab备忘录模式(Memento)
备忘录模式(Memento)用于保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式,主要包括源发器,备忘录以及负责人。源发器:普通类,可以创建备忘录,也可以使用备忘录恢复状态。 备忘录:储存原发器内部状态,处理原发器和负责人类,备忘录不直接和其他类交互。 负责人:保存备忘录,但是不对备忘录操作或检查存档、undo、数据库的事务管理用到了备忘录模式。本文参考以下类...原创 2019-06-03 12:00:01 · 263 阅读 · 0 评论 -
Matlab建造者模式(Builder)
创建者模式又叫建造者模式(Builder),是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。本文以创建计算机为例,使用Matlab语言来实现。Computer.m (要构造的复杂对象)classdef Computer < ha...原创 2019-05-27 17:52:18 · 509 阅读 · 0 评论 -
Matlab迭代器模式(Iterator)
迭代器(Iterator)模式,又叫做游标(Cursor)模式。提供一种方法访问一个容器(container)或者聚集(Aggregator)对象中各个元素,而又不需暴露该对象的内部细节。在采用不同的方式迭代时,只需要替换相应Iterator类即可。本文采用Matlab语言实现对元胞数组和string数组的遍历。Aggregator.mclassdef Aggregator < h...原创 2019-05-23 00:10:56 · 5359 阅读 · 0 评论 -
Matlab适配器模式(Adapter)
适配器模式是连接两个不兼容接口的桥梁,主要分为三种:类适配器、对象适配器以及接口适配器,本文根据https://blog.youkuaiyun.com/u012359453/article/details/79165080所给的例子使用matlab语言对三种适配器进行实现。已有的接口和类(AC220V):IAC220V.mclassdef IAC220V < handle metho...原创 2019-05-26 22:01:02 · 452 阅读 · 0 评论 -
Matlab状态模式(State)
状态模式就是将状态的条件判断语句转化成其函数重写形式,利用了面向对象语言的多态性,本文根据https://blog.youkuaiyun.com/lm324114/article/details/78819602的情景将状态模式用Matlab语言实现。根据上图情景,用传统的方法实现如下:RoomState.mclassdef RoomState < handle enumera...原创 2019-05-13 22:41:16 · 4086 阅读 · 0 评论 -
Matlab工厂模式(Factory)
工厂模式定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。工厂模式主要分为简单工厂模式、工厂方法模式以及抽象工厂模式。Obj.mclassdef Obj < handle methods function desc(~) end endendObject1.mclassdef Ob...原创 2019-05-14 19:31:12 · 717 阅读 · 0 评论 -
Matlab单例模式(Singleton)
要点1、构造方法是私有的,外部程序无法直接访问其构造方法2、获取对象实例方法是静态的,matlab没有静态变量,所以使用persistent变量保存这个类的唯一实例对象SingletonClass.mclassdef SingletonClass < handle methods(Access = private) function obj = Si...原创 2019-05-06 21:02:12 · 2131 阅读 · 0 评论 -
Matlab模板模式(Template)
由于不同的数据库SQL语法存在差异,在替换数据库时需要更改程序大量的SQL语句,而模板模式能够将零散的并且随数据库变化的SQL语句提取出来,提高了软件的可移植性和兼容性,本文依据http://www.w3school.com.cn/sql/sql_top.asp上面给出的语法,设计出了模板模式:模板方法类:classdef SQLTemplate < handle meth...原创 2019-05-06 22:04:22 · 3735 阅读 · 0 评论 -
Matlab装饰模式(Decorator Pattern)
根据https://www.runoob.com/design-pattern/decorator-pattern.html所给的例子,本人用Matlab语言写了装饰器模式Shape.mclassdef Shape < handle methods(Abstract) draw(obj); endendCircle.mc...原创 2019-05-08 00:22:34 · 486 阅读 · 0 评论 -
Matlab责任链模式(Chain)
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦,本人根据https://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html所给的例子,用Matlab代码实现责任链模式AbstractLogger.m...原创 2019-05-21 15:50:33 · 359 阅读 · 0 评论 -
Matlab外观模式(Facade)
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。本文以计算机为例,用Matlab代码实现外观模式。计算机包括CPU、内存以及硬盘等这些部件。用户在操作计算机时,不需要了解计算机部件的使用方法,只需要操作计算机的按钮,计算机部件交给计算机内部去做即可。这样降低了用户操作的复杂性。CPU.mclassdef CPU method...原创 2019-05-21 16:44:48 · 271 阅读 · 0 评论 -
Matlab原型模式(Prototype)
原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。Matlab面向对象编程有两种类,一种是Value Class,一种是Handle Class,Value对象深拷贝的直接通过赋值语句即可实现(实际上是Lazy Copy),如下所示:ValueA.mclassdef ValueA properties ...原创 2019-05-25 13:37:14 · 819 阅读 · 0 评论 -
Matlab观察者模式(Observer)
要点:1、服务端(Subject)维护一个观察者的列表,以便能够向所有的观察者(Observer)推送信息2、观察者可以获取服务端的状态3、服务端和观察者可抽象,可以有多个不同实现Subject.mclassdef Subject < handle properties(Access = private) observers = Observer...原创 2019-05-12 23:39:53 · 1096 阅读 · 0 评论 -
Matlab策略模式(Strategy)
策略模式的意图是定义一系列算法,把它们一个一个封装起来,并且使它们可以互相替换。通常每个策略算法不可抽象再分。本人仿照https://www.runoob.com/design-pattern/strategy-pattern.html所给的例子,用Matlab代码对其进行实现Strategy.mclassdef Strategy < handle methods(Abst...原创 2019-05-17 00:11:31 · 1345 阅读 · 0 评论 -
Matlab访问者模式(Visitor)
访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构(Element)进行分离,数据结构的类只需要提供对"访问者"开放的接口(API),而对元素的具体处理则作交给访问者(Visitor)负责。访问者模式中的角色:Visit...原创 2019-06-17 11:32:04 · 291 阅读 · 0 评论