- 博客(27)
- 收藏
- 关注
原创 WPF入门_02依赖属性
1、依赖属性主要有以下三个优点1)依赖属性加入了属性变化通知、限制、验证等功能。这样可以使我们更方便地实现应用,同时大大减少了代码量2)节约内存:在WinForm中,每个UI控件的属性都赋予了初始值,这样每个相同的控件在内存中都会保存一份初始值。而WPF依赖属性很好地解决了这个问题,它内部实现使用哈希表存储机制,对多个相同控件的相同属性的值都只保存一份3)支持多种提供对象:可以通过多种方式来设置依赖属性的值。可以配合表达式、样式和绑定来对依赖属性设置值
2024-10-17 21:22:34 467
原创 WPF入门_01布局
布局系统的工作原理是先测量后排列,测量即是确定面板需要多大空间,排列则是定义面板内子元素的排列规则。所以,要实现自定义布局控件,需要继承于Panel类并重写MeasureOverride和ArrangeOverride方法即可(参照代码;✳详细的代码实现,请点击资源绑定。
2024-10-16 21:12:09 481
原创 c#代码介绍23种设计模式总结篇
1、设计原则需要遵循以下几个原则:单一职责原则开放封闭原则里氏代替原则依赖倒置原则接口隔离原则合成复用原则迪米特法则2、创建型模式3、结构型模式4.、行为型模式
2024-10-13 21:16:20 1165
原创 c#代码介绍23种设计模式_23备忘录模式
从字面意思就可以明白,备忘录模式就是对某个类的状态进行保存下来,等到需要恢复的时候,可以从备忘录中进行恢复。生活中这样的例子经常看到,如备忘电话通讯录,备份操作操作系统,备份数据库等。备忘录模式的具体定义是:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以把该对象恢复到原先的状态。
2024-10-11 20:34:23 913
原创 c#代码介绍23种设计模式_22访问者模式
访问者模式是封装一些施加于某种数据结构之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保存不变。访问者模式适用于数据结构相对稳定的系统, 它把数据结构和作用于数据结构之上的操作之间的耦合度降低,使得操作集合可以相对自由地改变。数据结构的每一个节点都可以接受一个访问者的调用,此节点向访问者对象传入节点对象,而访问者对象则反过来执行节点对象的操作。这样的过程叫做“双重分派”。节点调用访问者,将它自己传入,访问者则将某算法针对此节点执行。
2024-10-10 21:34:07 1302
原创 c#代码介绍23种设计模式_21责任链模式
从生活中的例子可以发现,某个请求可能需要几个人的审批,即使技术经理审批完了,还需要上一级的审批。这样的例子,还有公司中的请假,少于3天的,直属Leader就可以批准,3天到7天之内就需要项目经理批准,多余7天的就需要技术总监的批准了。介绍了这么多生活中责任链模式的例子的,下面具体给出面向对象中责任链模式的定义。责任链模式指的是——某个请求需要多个对象进行处理,从而避免请求的发送者和接收之间的耦合关系。将这些对象连成一条链子,并沿着这条链子传递该请求,直到有对象处理它为止。
2024-10-08 22:09:03 1135
原创 c#代码介绍23种设计模式_20策略者模式
策略模式是针对一组算法,将每个算法封装到具有公共接口的独立的类中,从而使它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象。
2024-10-07 21:48:58 960
原创 c#代码介绍23种设计模式_19状态者模式
每个对象都有其对应的状态,而每个状态又对应一些相应的行为,如果某个对象有多个状态时,那么就会对应很多的行为。那么对这些状态的判断和根据状态完成的行为,就会导致多重条件语句,并且如果添加一种新的状态时,需要更改之前现有的代码。这样的设计显然违背了开闭原则。状态模式正是用来解决这样的问题的。状态模式将每种状态对应的行为抽象出来成为单独新的对象,这样状态的变化不再依赖于对象内部的行为。
2024-10-06 19:01:07 1371
原创 c#代码介绍23种设计模式_18中介者模式
从生活中的例子可以看出,不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户进行交流,如果没有这些中间平台,我们如果想与朋友进行聊天的话,可能就需要当面才可以了。电话、短信也同样是一个中间平台,有了这个中间平台,每个用户都不要直接依赖与其他用户,只需要依赖这个中间平台就可以了,一切操作都由中间平台去分发。了解完中介模式在生活中的模型后,下面给出中介模式的正式定义。中介者模式,定义了一个中介对象来封装一系列对象之间的交互关系。
2024-10-05 14:14:02 1184
原创 c#代码介绍23种设计模式_17观察者模式
从生活中的例子可以看出,只要对订阅号进行关注的客户端,如果订阅号有什么更新,就会直接推送给订阅了的用户。从中,我们就可以得出观察者模式的定义。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己的行为。
2024-10-04 22:54:38 1128
原创 c#代码介绍23种设计模式_16迭代器模式
迭代器是针对集合对象而生的,对于集合对象而言,必然涉及到集合元素的添加删除操作,同时也肯定支持遍历集合元素的操作,我们此时可以把遍历操作也放在集合对象中,但这样的话,集合对象就承担太多的责任了,面向对象设计原则中有一条是单一职责原则,所以我们要尽可能地分离这些职责,用不同的类去承担不同的职责。迭代器模式就是用迭代器类来承担遍历集合元素的职责。
2024-10-03 16:11:26 1688
原创 c#代码介绍23种设计模式_15命令模式
命令模式属于对象的行为型模式。命令模式是把一个操作或者行为抽象为一个对象中,通过对命令的抽象化来使得发出命令的责任和执行命令的责任分隔开。命令模式的实现可以提供命令的撤销和恢复功能。
2024-10-02 17:05:54 1147
原创 c#代码介绍23种设计模式_14模板方法模式
模板方法模式——在一个抽象类中定义一个操作中的算法骨架(对应于生活中的大家下载的模板),而将一些步骤延迟到子类中去实现(对应于我们根据自己的情况向模板填充内容)。模板方法使得子类可以不改变一个算法的结构前提下,重新定义算法的某些特定步骤,模板方法模式把不变行为搬到超类中,从而去除了子类中的重复代码。
2024-10-01 22:31:57 742
原创 c#代码介绍23种设计模式_13代理模式
代理模式按照使用目的可以分为以下几种1)远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是本电脑中,也可以在另一台电脑中。最典型的例子就是——客户端调用Web服务或WCF服务。2)虚拟(Virtual)代理:根据需要创建一个资源消耗较大的对象,使得对象只在需要时才会被真正创建。3)Copy-on-Write代理:虚拟代理的一种,把复制(或者叫克隆)拖延到只有在客户端需要时,才真正采取行动。
2024-09-30 21:27:45 1075
原创 c#代码介绍23种设计模式_12亨元模式
享元模式——运用共享技术有效地支持大量细粒度的对象。享元模式可以避免大量相似类的开销,在软件开发中如果需要生成大量细粒度的类实例来表示数据,如果这些实例除了几个参数外基本上都是相同的,这时候就可以使用享元模式来大幅度减少需要实例化类的数量。如果能把这些参数(指的这些类实例不同的参数)移动类实例外面,在方法调用时将他们传递进来,这样就可以通过共享大幅度地减少单个实例的数目。(这个也是享元模式的实现要领),然而我们把类实例外面的参数称为享元对象的外部状态,把在享元对象内部定义称为内部状态。
2024-09-29 21:40:02 1117
原创 c#代码介绍23种设计模式_11外观模式
外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内部子系统中方法,从而外观模式让客户和子系统之间避免了紧耦合。
2024-09-28 11:29:40 1091
原创 c#代码介绍23种设计模式_10组合模式
组合模式允许你将对象组合成树形结构来表现”部分-整体“的层次结构,使得客户以一致的方式处理单个对象以及对象的组合组合模式实现的最关键的地方是——简单对象和复合对象必须实现相同的接口。这就是组合模式能够将组合对象和简单对象进行一致处理的原因。
2024-09-27 21:36:52 957
原创 c#代码介绍23种设计模式_09装饰者模式
装饰者模式采用对象组合而非继承的方式实现了再运行时动态地扩展对象功能的能力,而且可以根据需要扩展多个功能,避免了单独使用继承带来的 ”灵活性差“和”多子类衍生问题“。同时它很好地符合面向对象设计原则中 ”优先使用对象组合而非继承“和”开放-封闭“原则
2024-09-26 20:46:34 1469
原创 c#代码介绍23种设计模式_07适配器模式
在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象。那么如果将“将现存的对象”在新的环境中进行调用呢?解决这个问题的办法就是我们本文要介绍的适配器模式——使得新环境中不需要去重复实现已经存在了的实现而很好地把现有对象(指原来环境中的现有对象)加入到新环境来使用
2024-09-23 21:57:15 865
原创 c#代码介绍23种设计模式_06原型模式
在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在内存中分配了多个一样的类实例对象,是对对象实例中字段引用的对象也进行拷贝,如果一个对象有一个指向字符串的字段,并且我们对该对象进行了深拷贝的话,那么我们将创建一个对象和一个新的字符串,新的对象将引用新的字符串。例如,如果一个对象有一个指向字符串的字段,并且我们对该对象做了一个浅拷贝,那么这两个对象将引用同一个字符串,
2024-09-22 17:12:08 1215
原创 c#代码介绍23种设计模式_05建造者模式
建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式使得建造代码与表示代码的分离,可以使客户端不必知道产品内部组成的细节,从而降低了客户端与具体产品之间的耦合度。
2024-09-22 16:40:06 701
原创 c#代码介绍23种设计模式-08桥接模式
桥接模式即将抽象部分与实现部分脱耦,使它们可以独立变化。对于上面的问题中,抽象化也就是RemoteControl类,实现部分也就是On()、Off()、NextChannel()等这样的方法(即遥控器的实现),上面的设计中,抽象化和实现部分在一起,桥接模式的目的就是使两者分离,根据面向对象的封装变化的原则,我们可以把实现部分的变化(也就是遥控器功能的变化)封装到另外一个类中,这样的一个思路也就是桥接模式的实现。
2024-09-22 16:30:39 1260
原创 c#代码介绍23种设计模式_04抽象工厂模式
提供一个创建产品的接口来负责创建相关或依赖的对象,而不具体明确指定具体类抽象工厂允许客户使用抽象的接口来创建一组相关产品,而不需要知道或关心实际生产出的具体产品是什么。这样客户就可以从具体产品中被解耦。
2024-09-22 15:36:48 828
原创 c#代码介绍23种设计模式_03工厂模式
工厂方法模式通过面向对象编程中的多态性来将对象的创建延迟到具体工厂中,从而解决了简单工厂模式中存在的问题,也很好地符合了开放封闭原则(即对扩展开发,对修改封闭)
2024-09-22 15:26:38 981
原创 c#代码介绍23种设计模式_02简单工厂模式
在设计模式中,简单工厂模式我们也可以理解为负责生产对象的一个类。我们平常编程中,当使用"new"关键字创建一个对象时,此时该类就依赖与这个对象,也就是他们之间的耦合度高,当需求变化时,我们就不得不去修改此类的源码,此时我们可以运用面向对象(OO)的很重要的原则去解决这一的问题,该原则就是——封装改变,既然要封装改变,自然也就要找到改变的代码,然后把改变的代码用类来封装,这样的一种思路也就是我们简单工厂模式的实现方式。
2024-09-21 22:39:54 872
原创 c#代码介绍23种设计模式_01单例模式
从单例模式的定义中我们可以看出——单例模式的使用自然是当我们的系统中某个对象只需要一个实例的情况,例如:操作系统中只能有一个任务管理器。
2024-09-21 22:30:11 476
原创 .Net 进程、应用程序域、上下文与线程之间的关系详解
它是进程中的基本执行单元,在进程入口执行的第一个线程被视为这个进程的主线程。一般不需要指定特定上下文的对象被称为上下文灵活对象(context-agile),建立此对象不需要特定的操作,只需要由CLR自行管理,一般这些对象都会被建立在默认上下文当中。在 System.Diagnostics 命名空间当中存在Process类,专门用于管理进程的开始、结束,访问进程中的模块,获取进程中的线程,设定进程的优先级别等。应用程序域是CLR中资源的边界,一般情况下,应用程序域中的对象不能被外界的对象所访问。
2024-09-15 22:21:05 592
WPF入门-02依赖属性(附c#代码)
2024-10-17
《机器学习基石》-林轩田05
2024-10-17
《机器学习基石》-林轩田04
2024-10-17
《机器学习基石》-林轩田03
2024-10-17
WPF入门-01布局(附代码)
2024-10-16
《机器学习基石》-林轩田02
2024-10-16
《机器学习基石》-林轩田01
2024-10-16
《Machine Learning》课程PPT-吴恩达18
2024-10-16
《Machine Learning》课程PPT-吴恩达17
2024-10-15
《Machine Learning》课程PPT-吴恩达16
2024-10-15
《Machine Learning》课程PPT-吴恩达15
2024-10-15
《Machine Learning》课程PPT-吴恩达14
2024-10-14
《Machine Learning》课程PPT-吴恩达13
2024-10-14
《Machine Learning》课程PPT-吴恩达12
2024-10-14
《Machine Learning》课程PPT-吴恩达11
2024-10-13
《Machine Learning》课程PPT-吴恩达10
2024-10-13
《Machine Learning》课程PPT-吴恩达09
2024-10-13
脚本Powershell的帮助文档chm
2024-10-12
《Machine Learning》课程PPT-吴恩达08
2024-10-11
《Machine Learning》课程PPT-吴恩达07
2024-10-11
c#代码介绍23种设计模式-23备忘录模式(附代码)
2024-10-11
《Machine Learning》课程PPT-吴恩达06
2024-10-10
《Machine Learning》课程PPT-吴恩达05
2024-10-10
《Machine Learning》课程PPT-吴恩达04
2024-10-10
c#代码介绍23种设计模式-22访问者模式(附代码)
2024-10-10
《Machine Learning》课程PPT-吴恩达03
2024-10-09
《Machine Learning》课程PPT-吴恩达02
2024-10-09
《Machine Learning》课程PPT-吴恩达01
2024-10-09
c#代码介绍23种设计模式-21责任链模式(附代码)
2024-10-08
c#代码介绍23种设计模式-20策略者模式(附代码)
2024-10-07
c#代码介绍23种设计模式-19状态者模式(附代码)
2024-10-06
c#代码介绍23种设计模式-18中介者模式(附代码)
2024-10-05
c#代码介绍23种设计模式-17观察者模式(附代码)
2024-10-04
c#代码介绍23种设计模式-16迭代器模式(附代码)
2024-10-03
c#代码介绍23种设计模式-15命令模式(附代码)
2024-10-02
停止机器上所有的Oracle的DB服务的小工具
2024-10-02
DevOps培训实验手册:从环境搭建到工具应用
2024-10-02
c#代码介绍23种设计模式-14模板方法模式(附代码)
2024-10-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人