- 博客(170)
- 收藏
- 关注
原创 组合模式-C#实现
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。意图:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。何时使用: 1、您想表示对象的部分-整体层次结构(树形结构)
2024-03-13 11:21:29 659
原创 状态者模式-C#实现
状态模式将每种状态对应的行为抽象出来成为单独新的对象,这样状态的变化不再依赖于对象内部的行为。状态模式——允许一个对象在其内部状态改变时自动改变其行为,对象看起来就像是改变了它的类。意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。何时使用:代码中包含大量与对象状态有关的条件语句。如何解决:将各种具体的状态类抽象出来。关键代码:通常命令模式的接口中只有一个方法。
2024-03-13 11:17:27 811
原创 装饰者模式-C#实现
可以使用装饰者模式来动态地给一个对象添加额外的职责。装饰者模式以对客户透明的方式动态地给一个对象附加上更多的责任,装饰者模式相比生成子类可以更灵活地增加功能。在装饰者模式中各个角色有:抽象构件(Phone)角色:给出一个抽象接口,以规范准备接受附加责任的对象。具体构件(AppPhone)角色:定义一个将要接收附加责任的类。装饰(Dicorator)角色:持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口。
2024-03-13 11:13:15 409
原创 中介者模式-C#实现
中介者模式,定义了一个中介对象来封装一系列对象之间的交互关系。中介者使各个对象之间不需要显式地相互引用,从而使耦合性降低,而且可以独立地改变它们之间的交互行为。中介者模式设计两个具体对象,一个是用户类,另一个是中介者类;根据针对接口编程原则,则需要把这两类角色进行抽象,所以中介者模式中就有了4类角色,它们分别是:1,抽象中介者角色,2,具体中介者角色、3,抽象同事类,4,具体同事类。中介者类是起到协调各个对象的作用,则抽象中介者角色中则需要保存各个对象的引用。
2024-03-13 11:08:26 268
原创 责任链模式-C#实现
责任链模式指的是——某个请求需要多个对象进行处理,从而避免请求的发送者和接收之间的耦合关系。将这些对象连成一条链子,并沿着这条链子传递该请求,直到有对象处理它为止。主要涉及两个角色:抽象处理者角色(Handler):定义出一个处理请求的接口。这个接口通常由接口或抽象类来实现。具体处理者角色(ConcreteHandler):具体处理者接受到请求后,可以选择将该请求处理掉,或者将请求传给下一个处理者。因此,每个具体处理者需要保存下一个处理者的引用,以便把请求传递下去。
2024-03-13 11:02:46 621
原创 原型模式-C#实现
当我们需要多个相同的类实例时,没必要每次都使用new运算符去创建相同的类实例对象,此时我们一般思路就是想——只创建一个类实例对象,如果后面需要更多这样的实例,可以通过对原来对象拷贝一份来完成创建,这样在内存中不需要创建多个相同的类实例,从而减少内存的消耗和达到类实例的复用。然而这个思路正是原型模式的实现方式。原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。该实例基于实现,直接上代码,下面为三层架构的代码。
2024-03-13 10:57:40 159
原创 享元模式-C#实现
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。意图:运用共享技术有效地支持大量细粒度的对象。主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。何时使用: 1、系统中有大量对象。2、这些对象消耗大量内存。3、这些对象的状态大部分可以外部化。
2024-03-13 10:54:12 496
原创 外观模式-C#实现
意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。何时使用: 1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。2、定义系统的入口。如何解决:客户端不与系统耦合,外观类与系统耦合。关键代码:在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。优点: 1、减少系统相互依赖。2、提高灵活性。3、提高了安全性。
2024-03-13 10:45:41 255
原创 适配器模式-C#实现
适配器模式——使得新环境中不需要去重复实现已经存在了的实现而很好地把现有对象(指原来环境中的现有对象)加入到新环境来使用。适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。该实例基于。
2024-03-13 10:39:09 204
原创 桥接模式-C#实现
桥接模式即将抽象部分与实现部分脱耦,使它们可以独立变化。桥接模式的目的就是使两者分离,根据面向对象的封装变化的原则,我们可以把实现部分的变化(也就是遥控器功能的变化)封装到另外一个类中。意图:将抽象部分与实现部分分离,使它们都可以独立的变化。主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。关键代码:抽象类依赖实现类。
2024-03-13 10:33:51 266
原创 模板模式-C#实现
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。主要解决:一些方法通用,却在每一个子类都重新写了这一方法。何时使用:有一些通用的方法。如何解决:将这些通用算法抽象出来。关键代码:在抽象类实现,其他步骤在子类实现。该实例基于实现,直接上代码,下面为三层架构的代码。
2024-03-13 10:27:46 219
原创 命令模式-C#实现
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系.何时使用:将"行为请求者"与"行为实现者"解耦,将一组行为抽象为对象,可以实现二者之间的松耦合。
2024-03-13 10:22:58 336
原创 工厂方法模式-C#实现
建造者模式,当然也有叫生成器模式的,英文名称是Builder Pattern。动机(Motivate)在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。意图(Intent)将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
2024-03-13 10:14:56 353
原创 简单工厂模式-C#实现
简单工厂模式我们也可以理解为负责生产对象的一个类,原则就是——封装改变,既然要封装改变,自然也就要找到改变的代码,然后把改变的代码用类来封装,意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。关键代码:创建过程在其子类执行。
2024-03-13 08:57:12 372
原创 观察者者模式-C#实现
观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。如何解决:使用面向对象技术,可以将这种依赖关系弱化。
2024-03-13 08:45:26 338
原创 C#演示抽象工厂模式
抽象工厂(Abstract Factory):声明了一组用于创建产品对象的方法,每个方法对应一种产品类型。抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。抽象产品(Abstract Product):定义了一组产品对象的共同接口或抽象类,描述了产品对象的公共方法。具体产品(Concrete Product):实现了抽象产品接口,定义了具体产品的特定行为和属性。具体工厂(Concrete Factory):实现了抽象工厂接口,负责创建具体产品对象的实例。
2023-10-24 09:26:59 304
原创 TreeView基本使用
AfterSelect事件:TreeView控件最常用的事件为AfterSelect事件,当更改TreeView控件中选定的内容时触发该事件。Scrollable属性:用于指示当TreeView控件包含多个节点,无法全部可视时确定是否使用滚动条,有true和false两个值。ImageList属性:用于设置从中获取图像的ImageList控件,该属性的设置必须与ImageList控件相配合。ShowLines属性:用于指示是否在同级别节点以及父节点与子节点之间显示连线。有true和false两个值。
2023-10-21 20:12:07 385
原创 RichTextBox基本用法
3、Horizontal:只有当文本超过RichTextBox的宽度时,才显示水平滚动条。1、Both:只有当文本超过RichTextBox的宽度或长度时,才显示水平滚动条或垂直滚动条,或两个滚动条都显示。2)Copy( )、Cut( )、Paste( )方法——实现RichText控件的剪贴板功能;6)Undo( )方法、Redo( )方法——撤销上一次编辑操作、重做上次撤销的编辑操作。5)SaveFile( )方法、LoadFile( )方法——保存文本和打开文件。富文本编辑器,支持多种文本展示。
2023-08-06 13:56:49 1039
原创 NotifyIcon控件基本使用
对象名称name,icon图标,右键菜单contextMenuStrip。系统托盘图标控件,用于应用程序最小化或后台运行时在托盘上面显示图标。
2023-08-06 10:00:48 311
C#之 MVVM演示及基本使用!
2023-07-02
C#开发类练习Demo
2023-07-02
基于控制台的客服管理系统
2023-07-02
自动化日志分析工具,可以自定义翻译规则
2023-05-07
Qt多线程读写大型文本文件项目
2023-04-29
上位机GUI页面包括登录注册主页功能
2023-04-19
上位机页面布局模板,包括业务逻辑和基础功能分区!
2023-04-19
QML对元素的操作与定位源码!
2023-04-08
多线程示例源码工程文件
2023-03-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人