![](https://img-blog.csdnimg.cn/20190319114343297.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
设计模式
桑榆207
在最终的结果到来之前,任何肯定会赢之类的话都是虚无缥缈的。
展开
-
访问者模式
目录一、访问者模式二、访问者模式角色三、代码实例一四、代码实例二五、代码实例三UML图一、访问者模式访问者模式表示一个作用于某对象结构中的各元素操作。它使你在不改变各元素的类的前提下定义作用于这些元素的操作。它增加状态比较简单,符合开闭原则,但是增加元素困难,不符合开闭原则。类似于抽象工厂,以一种倾斜的方式扩展(方法集合的可扩展和类集合的不可扩展)。本质是...原创 2019-05-28 11:35:19 · 182 阅读 · 0 评论 -
享元模式
目录一、享元模式二、享元模式角色三、代码实例一四、代码实例二UML图一、享元模式运用共享技术有效地支持大量细粒度的对象。享元模式要注重内部状态和外部状态。内部状态是不随外界环境改变的存储在享元对象内部的。内部状态可以共享。外部状态随外界改变,不可以共享。享元对象外部状态要在客户端保存,有需要时传入享元对象内部。内外独立。使用条件:1、一个系统要很多对象...原创 2019-05-27 19:27:00 · 154 阅读 · 0 评论 -
中介者模式
目录一、中介者模式二、中介者模式角色三、代码实例一UML图一、中介者模式用一个中介对象来封装一系列对象的交互。中介者使得各个对象不需要显示相互引用,从而使其耦合松散,而且可以独立改变他们之间的交互。本质就是封装交互。PROS AND CONSPROS:1、它将对象之间通信封装到一个类中,将多对多对象之间通信变成一对多的。降低系统复杂度。2、中介者还可以降...原创 2019-05-21 10:42:29 · 260 阅读 · 0 评论 -
命令模式
目录一、命令模式二、命令模式角色三、代码实例一四、代码实例二五、代码实例三六、代码实例四UML图一、命令模式命令模式又称行动或交易模式,把命令封装到一个类中,然后客户端可以使用不同的请求进行参数化。而且对于请求队列和记录请求日志,可以提供撤销和恢复功能。命令模式分离了发出命令责任和执行命令责任。命令模式分离了发出命令和执行命令,故请求命令和执行命令可以...原创 2019-05-21 10:42:50 · 185 阅读 · 0 评论 -
桥接模式+C#发送邮件+配置文件
目录一、桥接模式二、桥接模式角色三、代码实例一UML一、桥接模式将抽象化和实现化脱耦,使得二者可以独立变化。桥接模式将继承方式转化为了组合聚合方式,强关联就变成了弱关联。本质是分离抽象和实现。符合组合/聚合原则,符合开放封闭原则,松耦合,高内聚。耦合:两个实体行为的某种强关联。解耦:将强关联去掉或改成弱关联。继承->聚合该模式包含两个等级结...原创 2019-05-14 11:25:11 · 344 阅读 · 0 评论 -
职责链模式--状态模式--策略模式
一、职责链模式使每一个对象都有机会处理请求,避免请求的发送方和接受方的耦合。使任务沿着一条链传递,最终有人处理它。优点:请求者和接收者松耦合。动态组合职责。缺点:会产生很多细粒度对象。请求不一定被处理。需要默认处理方法。过于灵活,在使用它时需要确定下一个对象是谁。本质是分离职责,动态耦合。与状态模式的对比,状态模式是一个对象内在状态发生变化,相对稳定,而...原创 2019-05-14 10:39:20 · 306 阅读 · 0 评论 -
单例模式+读取配置文件
目录一、单例模式二、代码实例一三、代码实例二--读取配置文件UML图一、单例模式问题引出的怎样创建唯一变量(对象)。也就是保证一个类只有一个实例。其中单例模式又分为饿汉式和懒汉式单例。前者是空间换时间,后者是时间换空间。单例模式包含静态的对象成员,私有的构造函数,静态的得到实例的函数。私有构造函数确保外部不能new一个对象。GetInstance函数负责检验并实例化...原创 2019-05-06 21:00:11 · 2195 阅读 · 0 评论 -
迭代器模式
C#里面的 foreach (Component c in child) { c.Depth(depth + 2); }代码实例一迭代器抽象类using System;using System.Collections.Generic;using System.Linq;using System...原创 2019-05-06 20:06:28 · 81 阅读 · 0 评论 -
组合模式
目录一、组合模式二、组合模式角色三、代码实例一四、代码实例二五、代码实例三UML图:一、组合模式1、组合模式又叫做部分-整体角色。组合模式将对象整合到树结构中,描述部分和整体关系。本质是统一了叶子对象和组合对象。2、使用场景体现部分与整体结构层次时希望忽略组合对象和单个对象的不同,统一使用组合结构中所有对象。3、优点1、符合开放-封闭原则...原创 2019-05-06 20:05:16 · 138 阅读 · 0 评论 -
备忘录模式
目录一、备忘录模式二、备忘录模式角色三、代码实例一四、代码实例二五、代码实例三UML图:一、备忘录模式备忘录模式就是在不破坏封装性的前提下,捕捉一个对象的内部状态,并在对象之外保存它,这样就可以在以后恢复这个状态。本质是恢复内部状态。二、备忘录模式角色1、源发器角色:创建一个备忘录并存储状态,便于恢复。2、备忘录角色:储存源发器内部状态。3、...原创 2019-04-30 11:18:53 · 123 阅读 · 0 评论 -
适配器模式
目录一、适配器模式二、适配器模式角色三、代码实例一四、代码实例二五、代码实例三类适配器的UML:对象适配器的UML图:一、适配器模式适配器模式把一个类的接口变成客户端想要的另一种接口,从而使两个接口不匹配的类能够在一起工作。本质是转换匹配,复用功能。这种模式分为两类:1、类的适配器2、对象的适配器主要应用在代码复用,希望复用一些接口,而接口...原创 2019-04-29 19:32:02 · 155 阅读 · 0 评论 -
外观模式
目录一、外观模式二、外观模式角色三、代码实例一四、代码实例二一、外观模式外观模式也称门面模式,外部和子系统之间必须以一个统一的外观对象进行。本质是封装交互、简化调用。使用场景:1、为一个复杂系统提供一个接口2、客户程序与抽象类的实现有很大依赖3、层次化结构中一个层次提供一个外观作为入口点4、希望包装或隐藏原有系统它的优点很显然:1、减少了系统...原创 2019-04-29 17:53:35 · 122 阅读 · 0 评论 -
状态模式
目录一、状态模式二、状态模式角色三、代码实例一四、代码实例二五、代码实例三六、代码实例四UML图:一、状态模式状态模式解决一些状态转换条件比较复杂时的情况。这时把逻辑的判断放在不同的类中,简化逻辑。允许一个对象在其内部状态改变时改变它的行为,这个对象看起来似乎改变了它的类。它主要应用于的情况是当条件表达式过于复杂时,把状态的逻辑判断放到不同状态的一系列类中,...原创 2019-04-23 10:03:56 · 135 阅读 · 0 评论 -
抽象工厂模式+XML+反射+C#界面
目录一、抽象工厂模式二、抽象工厂模式角色三、代码实例一四、代码实例二五、数据库连接实现六、XML+反射+模板方法+抽象工厂实现七、对配置文件的更改八、UML图九、页面实现一、抽象工厂模式提供了一个或一系列相互关联或依赖的对象接口。而且是所有工厂类设计模式最抽象和最实用的一种模式。二、抽象工厂模式角色1、抽象工厂角色,是核心。2、具体工厂剧角色...原创 2019-04-16 23:11:01 · 538 阅读 · 0 评论 -
观察者模式
目录一、观察者模式二、观察者模式角色1、抽象主题2、抽象观察者3、具体主题4、具体观察者四、应用五、代码实例一六、代码实例二七、C#中的委托事件机制一、观察者模式观察者模式实现了观察者与目标之间的抽象耦合、动态联动。例如 知乎、微博、外卖等软件,当有新的热门信息、我们经常浏览的信息更新时,手机上经常会受到信息。我们就是观察者,而这些软件就像是目标...原创 2019-04-16 11:31:36 · 142 阅读 · 0 评论 -
模板方法模式---C#实现简单登录界面+C#数据库连接+ACCESS16版本后与以前版本不同之处+钩子方法
目录一、模板方法二、钩子方法三、代码实例一四、代码实例二UML图一、模板方法定义一个操作中的算法骨架,将一些步骤延迟到子类。模板方法使得子类不改变算法结构即可以重新定义某些具体步骤。二、钩子方法在实际中的应用,比如说有一个接口,这个接口里有7个方法,而你只想用其中一个方法,那么这时,你可以写一个抽象类实现这个接口,在这个抽象类里将你要用的那个方法设置为abstr...原创 2019-04-09 19:15:19 · 578 阅读 · 0 评论 -
建造者模式+C#窗口实现
目录一、建造者模式二、建造者模式角色三、代码实例一四、代码实例二五、代码实例三、UML图一、建造者模式将一个复杂对象的构建与其表示分离,使得同样构建过程可以创建不同表示。就像下面的建造小人例子,同样的构建过程就创建了不同的小人。建造者模式使得产品内部可以独立变化,客户不必知道其实现细节。各个建造者可以独立变化最终的产品易于控制。本质是分离整体构建算法...原创 2019-04-09 19:05:26 · 858 阅读 · 0 评论 -
工厂方法模式+XML+反射
目录一、工厂方法模式二、工厂方法模式角色三、代码实例一四、代码实例二五、代码实例三六、UML图一、工厂方法模式工厂方法模式是工厂模式的推广,它依然使用多态性质。本质是延迟到子类实现功能。与抽象工厂不同的是,抽象工厂里有一族产品,如果产品家族中只有一种产品,那么抽象工厂模式就退化成了工厂方法模式。二、工厂方法模式角色抽象工厂接口:下面的创建对象的工厂必...原创 2019-04-09 10:56:40 · 382 阅读 · 0 评论 -
二、JAVA反射机制--进阶篇详解
目录一、Constructors二、Methods三、Getter and Setter四、 Private fields and methods六、Dynamic Class Loading and Reloading一、Constructors包括构造方法的获得及实例化对象。package design;import java.lang.refle...原创 2019-04-08 12:06:46 · 146 阅读 · 0 评论 -
一、JAVA反射机制--入门篇详解
目录一、JAVA反射机制基本概念二、获取Class对象的三种方式三、三种方式代码实例四、基础语法--获取类方法及调用1、基本语法2、有无参构造函数调用及使用3、公共、私有、保护函数的获取及调用一、JAVA反射机制基本概念反射:动态获取类中信息,动态调用其方法,相当于对类的剖析。通过反射机制+配置文件,可以提高应用程序的扩展性。毕竟面对配置文件比...原创 2019-04-03 22:03:27 · 259 阅读 · 0 评论 -
原型模式
目录一、原型模式二、原型模式角色三、代码实例一四、代码实例二 五、代码实例三UML图一、原型模式通过给出一个原型对象来指明所要创建的对象类型。然后复制这个原型对象来创建更多的同类型对象。用原型实例创建对象的种类,并且通过拷贝这些原型创建新的对象。应用场景:1、需要从一个对象出发,得到若干个和其他状态相同,并可以相互独立变化状态的对象。...原创 2019-04-02 11:26:38 · 144 阅读 · 0 评论 -
代理模式
目录一、代理模式二、代理模式角色三、代码实例一四、代码实例二五、代码实例三UML图:一、代理模式为其他对象提供一种代理以控制对这个对象的访问。本质是控制对象访问。代理模式一点理解:假如有两个对象A、B、C,当A不想或很难直接访问C,这时通过B访问C。就像假如A不想去上课,然后想B帮忙答到,这时B就帮忙答到了。程序经常应用在:1、程序不希望用户直接...原创 2019-04-01 10:43:37 · 113 阅读 · 0 评论 -
装饰模式--奖金计算(C#)与JAVA IO流
奖金分类,对于个人有当月奖金、个人累计奖金、个人业务增长奖金、及时回款奖金、限时成交加码奖金等;对于业务主管或者是业务经理,除了个人奖金外,还有团队累积奖金、团队业务增长奖金、团队盈利奖金等。 计算公式也有不同 计算奖金金额的基数也有不同 奖金的计算方式会经常变化。要适于调整和修改。利用装饰模式:using System;using System.Collections.Generic...原创 2019-03-26 10:30:56 · 570 阅读 · 0 评论 -
装饰模式
目录一、装饰模式二、代码实例一三、代码实例二四、IO流五、代码实例三UML图:一、装饰模式要点装饰模式,根据字面意思,是对一些类进行装饰,动态扩展功能。Component类:抽象类或接口ConcreteComponent类:代表具体的被装饰类,就像下文中的Person类Decoraor类:装饰类,成员是Component类的对象ConcreteD...原创 2019-03-19 11:19:09 · 638 阅读 · 0 评论 -
设计模式几个原则的应用--控制开关(C#)
设计可以控制开关的程序,可以控制种类不同的物件,便于增加和复用。TV 和 Light类可以是抽象类或者接口第一个类:开关接口类using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace...原创 2019-03-19 11:11:46 · 925 阅读 · 0 评论 -
策略模式
目录一、策略模式二、策略模式角色三、代码实例一四、代码实例二五、代码实例三UML图一、策略模式针对一组算法,将每一个算法封装到具有公共接口的独立的类中,使得它们可以互相替换。策略模式使得算法在不影响客户端的情况下发生变化。与简单工厂不同的是,这里的上下文类取代了工厂类,那么他俩有什么区别呢?简单工厂返回的是一个对象,而这里的上下文类是在具体化一个类 ,并且...原创 2019-03-18 22:17:38 · 135 阅读 · 0 评论 -
简单工厂模式+XML解耦+反射
目录一、简单工厂模式二、简单工厂模式角色三、普通代码实例四、配置文件+反射五、UML图一、简单工厂模式从字面意思看来就是要有一个工厂类,那么这个工厂类是干什么的呢?创建并返回一个具体对象。应用场景如下:1.完全封装隔离具体实现,只通过客户端使用。 2.对外集中创建对象。二、简单工厂模式角色假如我们要做一个计算器,它有很多个功能。加减乘除取余乘方等,利用...原创 2019-03-05 10:52:26 · 303 阅读 · 0 评论