![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 68
疯流人物
我是一个爱代码疯狂,为软件消得人憔悴的疯流人物
展开
-
utils层与tools层,manager层与service层,helper层概念理解
service层:业务处理层,在大系统中,该层比较复杂,故可抽取出通用处理层(manager层),并且一个service层可以对应多个manager层,但小系统的话,往往没必要抽取出manager层,一个service层足够了。manager层:通用业务处理层,它有如下特征,对第三方平台封装的层,预处理返回结果及转化异常信息;对 Service 层通用能力的下沉,如缓存方案、中间件通用处理;utils层:工具类层,通用的、与业务无关的,可以独立出来,可供其他项目使用;1、utils层与tools层。转载 2022-11-03 14:04:14 · 2763 阅读 · 0 评论 -
设计模式应用有感总结
设计模式应用有感总结1、桥接设计模式2、代理设计模式(1)代理类可以对委托类进行功能扩展,所以当需要对某个类功能(操作或方法)进行扩展时可以使用代理模式原创 2022-07-25 15:24:55 · 413 阅读 · 0 评论 -
试图理解MVC模式
我已经重写了你的项目以使用MVC.主项目文件:var Model: TModel; Controller: TController;begin Application.Initialize; Application.CreateForm(TMainForm, MainForm); Model := TModel.Create; Controller := TController.Create(Model, MainForm); Application.R原创 2022-05-31 09:20:52 · 75 阅读 · 0 评论 -
Delphi常用架构开源资源汇总
1、eMVChttp://sourceforge.net/projects/emvc/2、MVVMhttps://github.com/apress/mvvm-in-delphi3、MVChttps://github.com/danieleteti/delphimvcframework原创 2020-12-01 17:00:46 · 516 阅读 · 0 评论 -
谈谈singelton单例模式
单例模式是一种常用设计模式。该类只有一个实例,而且该类自行创建实例。 很多时候,服务器都只需要一个全局对象,这样方便协调系统的整体行为。比如系统的配置文件,系统只需要一个单例对象读取加载,其他对象只需要通过该单例对象获取配置信息。这样方便在复杂模式下对系统配置的管理。 java中常用单例模式:[java] view pl原创 2014-08-03 17:40:37 · 611 阅读 · 0 评论 -
《GOF设计模式》—原型(Prototype)—Delphi源码示例:原型接口
示例:原型接口说明:(1)、定义用原型实例指定要创建对象的种类,并且通过拷贝这些原型实例创建新的同类对象。(2)、结构原型Prototype:抽象原型,声明一个克隆自身的接口。ConcretePrototype:具体原型,实现一个克隆自身的操作。客户端Client:让一个原型克隆自身从而创建一个新的对象。代码:unit uPrototyp转载 2014-08-03 17:37:54 · 624 阅读 · 0 评论 -
《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:绘图编辑器
示例:绘图编辑器说明:有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。例如,有一个绘图编辑器,这个编辑器允许用户绘制和排列基本图元(线、多边型和正文等)、生成图片和图表。这个绘图编辑器的关键抽象是图形对象。图形对象有一个可编辑的形状,并可以绘制自身。图形对象的接口由一个称为Shape的抽象类定义。绘图编辑器为每一种图形对象定转载 2014-08-03 21:49:26 · 739 阅读 · 0 评论 -
《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:可插入的Adapter(使用抽象操作)
示例:可插入的Adapter(使用抽象操作)说明:当其他的类(如A)使用一个类(如C)时,如果所需的假定条件越少,这个类(如C)就更具可复用性。如果将接口匹配构建为一个类(如B),就不需要假定对其他的类可见的是一个相同的接口(如C接口)。也就是说,接口匹配使得我们可以将自己的类(如C)加入到一些现有的系统中去,而这些系统对这个类(如C)的接口可能会有所不同。A =〉 C转载 2014-08-03 21:51:20 · 670 阅读 · 0 评论 -
《GOF设计模式》—桥接(BRIDGE)—Delphi源码示例:共享Implementor对象
示例:共享Implementor对象说明:Coplien阐明了如何用C++中常用的Handle/Body方法在多个对象间共享一些实现。其中Body有一个对象引用计数器,Handle对它进行增减操作。 代码:unit uHandle; interface uses Dialogs; type TBody = cl转载 2014-08-03 22:02:16 · 703 阅读 · 0 评论 -
关于MVC,MVP,MVVM的一点总结和思考
##简介软件的架构方式有很多种,从最开始的MVC模式,演化到MVP,然后到现在的MVVM,在不断的演化过程中其核心的思想就是降低各组件之间的耦合度,使得数据的流向更加的清晰明了。但并不是意味着一个比另一个高级,只是对于软件的架构方式有的不同的视角,针对不同的场景有了更多的选择方案。在学习过程中通过对三种架构方式的比对和思考,可以很好的帮助我们提高对于软件架构的理解,以下只是自己学习过程中的一点总...转载 2019-06-03 17:50:10 · 178 阅读 · 0 评论 -
Android中用到的MVP模式
参考:android架构设计—mvp模式封装MVP模式是由MVC模式逐渐演化出来的。首先简单介绍一下MVC。这个在Spring框架里面是一个很常见的模式。MVCM(model)模型, 是应用程序中用于处理应用数据逻辑的部分,通常模型对象负责在数据库中进行存取V(view)视图, 是应用程序中处理数据的显示部分,通常视图是一句模型数据来创建的C(controller)控制器, 是应...转载 2019-07-25 11:55:18 · 261 阅读 · 0 评论 -
Android MVP模式 简单易懂的介绍方式
Android MVP PatternAndroidMVP 模式1也不是什么新鲜的东西了,我在自己的项目里也普遍地使用了这个设计模式。当项目越来越庞大、复杂,参与的研发人员越来越多的时候,MVP 模式的优势就充分显示出来了。导读:MVP模式是MVC模式在Android上的一种变体,要介绍MVP就得先介绍MVC。在MVC模式中,Activity应该是属于View这一层。而实质上,它既承...转载 2019-07-25 12:01:58 · 143 阅读 · 0 评论 -
Android App的设计架构:MVC,MVP,MVVM与架构经验谈
和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于App的架构如何设计: 我的App需要应用这些设计架构吗? MVC,MVP等架构讲的是什么?区别是什么? 本文就来带你分析一下这几个架构的特性,优缺点,以及App架构设计中应该注意的问题。1.架构设计的目的通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合。这...转载 2019-07-25 14:07:25 · 270 阅读 · 0 评论 -
OKHttp+MVP框架
首先导入依赖implementation 'com.jakewharton:butterknife:8.8.1'annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'implementation 'com.squareup.okhttp3:okhttp:3.11.0'implementation 'com.goo...转载 2019-07-25 17:13:13 · 387 阅读 · 0 评论 -
C#简单三层架构
三层架构是哪三层界面层(User Interface layer)业务逻辑层(Business Logic Layer)数据访问层(Data access layer)如何搭建三层架构步骤1:文件---新建---项目---Windows窗体应用程序名称:UIL解决方案名称:Demo3Tier选中解决方案名称:Demo3Tier添加---新建项目---类库名...转载 2019-09-17 09:58:04 · 1063 阅读 · 0 评论 -
《GOF设计模式》—组合(COMPOSITE)—Delphi源码示例:绘图编辑器
示例:绘图编辑器说明:代码:unit uGraphic; interface uses Windows,SysUtils,Classes,Graphics,Types; type TGraphic = class protected FCanvas: TCanvas;转载 2014-08-03 22:07:22 · 872 阅读 · 0 评论 -
《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:适配器接口
示例:适配器接口说明:(1)、定义将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(2)、结构对象匹配器依赖于对象组合,如下图所示。目标Target:定义Client使用的与特定领域相关的接口。适配器Adapter:对Adaptee的接口与Target接口进行适配。被适配者Ada转载 2014-08-03 21:45:13 · 592 阅读 · 0 评论 -
《GOF设计模式》—原型(Prototype)—Delphi源码示例:浅拷贝和深拷贝
示例:浅拷贝和深拷贝说明:Prototype模式最困难的部分在于正确实现Clone操作。例如,当所考虑的类已经存在时就难以新增Clone操作。当类内部包括一些不支持拷贝或有循环引用的对象时,实现克隆可能会很困难。大多数语言都对克隆对象提供了一些支持。例如,Smalltalk提供了一个copy的实现,它被所有Object的子类所继承。C++提供了一个拷贝构造器。但这些措施并不能解转载 2014-08-03 17:33:28 · 612 阅读 · 0 评论 -
《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:可插入的Adapter(使用代理对象)
示例:可插入的Adapter(使用代理对象)实现:b)、使用代理对象在这种方法中,TreeDisplay将访问树结构的请求转发到代理对象。TreeDisplay的客户进行一些选择,并将这些选择提供给代理对象,这样客户就可以对适配加以控制,如下图所示。例如,有一个DirectoryBrowser,它像前面一样使用TreeDisplay。DirectoryBrowser转载 2014-08-03 21:53:01 · 694 阅读 · 0 评论 -
《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:使用双向适配器提供透明操作
示例:使用双向适配器提供透明操作说明:使用适配器的一个潜在问题是,它们不对所有的客户都透明。被适配的对象不再兼容Adaptee的接口,因此并不是所有Adaptee对象可以被使用的方它都可以被使用。双向适配器提供了这样的透明性。在两个不同的客户需要用不同的方式查看同一个对象时,双向适配器尤其有用。实现:考虑一个双向适配器,它将图形编辑框架Unidraw与约束求解工具箱QOCA转载 2014-08-03 21:55:39 · 672 阅读 · 0 评论 -
《GOF设计模式》—桥接(BRIDGE)—Delphi源码示例:可移植的用户界面
示例:可移植的用户界面说明: 代码: unit uWindow; interface usesWindows,SysUtils,Classes,Graphics; type TWindow = class; TWindowImp = class; {窗口视图} TView = clas转载 2014-08-03 21:57:14 · 668 阅读 · 0 评论 -
《GOF设计模式》—桥接(BRIDGE)—Delphi源码示例:仅有一个Implementor
示例:仅有一个Implementor说明:在仅有一个实现的时候,没有必要创建一个抽象的Implementor类。这是Bridge模式的退化情况;在Abstraction与Implementor之间有一种一对一的关系。尽管如此,当你希望改变一个类的实现不会影响已有的客户程序时,模式的分离机制还是非常有用的—也就是说,不必重新编译它们,仅需重新连接即可(例如,Abstraction在主转载 2014-08-03 22:00:48 · 620 阅读 · 0 评论 -
《GOF设计模式》—桥接(BRIDGE)—Delphi源码示例:创建正确的Implementor对象(缺省的实现)
示例:创建正确的Implementor对象(缺省的实现)说明:创建正确Implementor对象的另外一种方法是首先选择一个缺省的实现,然后根据需要改变这个实现。例如,如果一个collection的大小超出了一定的阈值时,它将会切换它的实现,使之更适用于表目较多的collection。 代码: unit uBridge3; interface u转载 2014-08-03 22:03:15 · 710 阅读 · 0 评论 -
《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:可插入的Adapter(参数化的适配器)
示例:可插入的Adapter(参数化的适配器)实现:c)、参数化的适配器用一个或多个模块对适配器进行参数化。模块构造支持无子类化的适配。一个模块可以匹配一个请求,并且适配器可以为每个请求存储一个模块。在本例中意味着,TreeDisplay存储的一个模块用来将一个节点转化成为一个GraphicNode,另外一个模块用来存取一个节点的子节点。 例如,当对一个目录层次转载 2014-08-03 21:54:16 · 548 阅读 · 0 评论 -
《GOF设计模式》—桥接(BRIDGE)—Delphi源码示例:桥接接口
示例:桥接接口说明:(1)、定义将抽象部分与它的实现部分分离,使它们都可以独立地变化。(2)、结构抽象类:Abstraction:定义抽象类的接口。维护一个指向Implementor类型对象的指针。RefinedAbstraction:扩充由Abstraction定义的接口。实现类:Implementor:定义实现类的接口,该接口不一定要与Abs转载 2014-08-03 21:58:04 · 658 阅读 · 0 评论 -
《GOF设计模式》—桥接(BRIDGE)—Delphi源码示例:创建正确的Implementor对象(参数)
示例:创建正确的Implementor对象(参数)说明:如果Abstraction知道所有的ConcreteImplementor类,它就可以在它的构造器中对其中的一个类进行实例化,它可以通过传递给构造器的参数确定实例化哪一个类。例如,如果一个collection类支持多重实现,就可以根据collection的大小决定实例化哪一个类。链表的实现可以用于较小的collection转载 2014-08-03 21:59:46 · 658 阅读 · 0 评论 -
《GOF设计模式》—组合(COMPOSITE)—Delphi源码示例:组合接口
示例:组合接口说明:(1)、定义将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。(2)、结构 组合:Component:为组合中的对象声明接口。在适当的情况下,实现所有类共有接口的缺省行为。声明一个接口用于访问和管理Component的子组件。在递归结构中定义一个接口,用于访问一个父部件转载 2014-08-03 22:06:09 · 744 阅读 · 0 评论 -
原型模式(Prototype)
复制功能应该说是一个软件系统非常常见的功能,有人曾经说过“聪明的程序员,是偷窃别人思想的程序员”,我不知道我算不算聪明的程序员,但是我确实很喜欢将别人写过的我需要的功能代码复制到我的项目中去。 同样的,在面向对象程序开发中,复制同样是有非常有意义的。很多时候构造一个对象会很复杂,需要设定n多的参数,并且调用很多方法。如果这个对象需要很多实例,那么重复的进行复杂的创建过程就非常容易出转载 2014-08-03 17:45:24 · 573 阅读 · 0 评论 -
《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:基于抽象工厂的迷宫
分类: Delphi 设计模式 2012-10-25 11:13 317人阅读 评论(0)收藏 举报[delphi] view plaincopyprint?示例:基于抽象工厂的迷宫 实现: 如果TMaze.Create是传递一个对象当作参数来建立rooms、walls及doors;如此你可以以不同的参数来改变rooms、wal转载 2014-08-03 17:48:13 · 728 阅读 · 0 评论 -
《GOF设计模式》—工厂方法(Factory Method)—Delphi源码示例:基于工厂方法的迷宫
示例:基于工厂方法的迷宫 实现:. 函数CreateMaze建造并返回一个迷宫。这个函数存在的一个问题是它对迷宫、房间、门和墙壁的类进行了硬编码。我们将引入工厂方法以使子类可以选择这些构件。 首先,我们将在MazeGame中定义工厂方法以创建迷宫、房间、墙壁和门对象;每一个工厂方法返回一个给定类型的迷宫构件。MazeGame提供一些缺省的实现,它们返回最简单的迷宫、房间、墙壁和门。 不同的转载 2014-08-03 17:53:36 · 579 阅读 · 0 评论 -
谈谈singelton单例模式
单例模式是一种常用设计模式。该类只有一个实例,而且该类自行创建实例。 很多时候,服务器都只需要一个全局对象,这样方便协调系统的整体行为。比如系统的配置文件,系统只需要一个单例对象读取加载,其他对象只需要通过该单例对象获取配置信息。这样方便在复杂模式下对系统配置的管理。 java中常用单例模式:[java] view plainc转载 2014-04-22 11:34:06 · 863 阅读 · 0 评论