09 2021 档案
摘要:TemplateBinding的数据绑定是单向的,从数据源到目标,而Binding是双向的,可以通过Mode设置。 TemplateBinding不能对数据对象进行自动转换,数据源和目标数据类型不同,需要通过IValueConverter转换,Binding会自动转换。 TemplateBindin
阅读全文
摘要:组合模式:是将对象组合成树形结构一表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式示例代码如下: class Program { static void Main(string[] args) { Composite root = new Composi
阅读全文
摘要:一、重载 重载就是在同一个类中,方法名相同,参数列表不同,返回类型可以不相同。参数列表不同包括:参数的个数不同,参数类型不同等。 以下就是返回类型可以不相同,但是他们的参数列表必须不同 public void Method2(int i,string j) { } public string Met
阅读全文
摘要:一、将元素绑定到一起 数据绑定的最简单情形是源对象是WPF元素,而且源属性是依赖属性。 绑定表达式如下: <TextBox Text="{Binding Path=Value,ElementName=slider1}"/> <Slider x:Name="slider1"/> 绑定模式: OneWa
阅读全文
摘要:Tuple是C# 4.0时出的新特性,.Net Framework 4.0以上版本可用。ValueTuple是C# 7.0的新特性之一,.Net Framework 4.7以上版本可用。 一、Tuple .Net Framework元组仅支持1到7个元组元素,如果有8个元素或者更多,需要使用Tupl
阅读全文
摘要:params 关键字可以给一个方法(method)传递数量可变的参数(parameter) 规则 1.params后面的参数类型必须是一维数组,否则会出现编译出错; 2.params后面不允许再有其他参数了,前面可以有; 3.一个方法的申明中只能有一个params关键字 public class M
阅读全文
摘要:一、命令与事件的区别 事件的作用是发布、传播一些消息,消息送达接收者,事件的使命也就完成了,至于如何响应事件送来的消息事件并不做规定,每个接收者可以使用自己的行为来响应事件,因此事件不具有约束力,而命令具有约束力。 待加
阅读全文
摘要:图形的变形(Transform)控制变形的属性有2个:RenderTransform呈现变形,定义在UIElement类中LayoutTransform:布局变形,定义在FrameworkElement类中Transform的派生类有以下几种,它们都可以作用于RenderTransform和Layo
阅读全文
摘要:转载自类与类之间的几种关系 - 残剑_ - 博客园 (cnblogs.com) 1.继承关系 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。 2.实现关系 实现指的是一个class类实现interface接口(可以是多个)的功能,实现
阅读全文
摘要:桥接模式定义:将抽象部分与它的实现部分分离,使他们都可以独立的变化。主要运用的是“合成/聚合复用原则”。 使用合成/复用原则的好处:有助于你保持每个类被装转,并被集中在当个任务上,这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物 abstract class HandsetSo
阅读全文
摘要:定义:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得一个子系统更加容易使用。 基本代码: 三个子系统的类 class SubSystem1 { public void MethodA() { Console.WriteLine("子系统方法1”); } } class
阅读全文
摘要:定义:将一个类的接口转换成客户希望的另外的一个接口。Adapter模式使得原本由于接口不兼容二不能一起工作的那些类可以一起工作。 适配器的使用场景:在想使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时【并且双方都不太容易修改】就应该使用适配器模式,通常用在软件开发后期或维护期。
阅读全文
摘要:定义:它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。 策略模式是一种定义一系列算法的方法,从概念上来家看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有算法,减少了各种算法类于使用算法之间的耦合。 基本代码如下: st
阅读全文
摘要:定义:动态的给一个对象添加游戏欸额外的职责,就增加功能来说,装饰模式比生成子类更灵活。 注意他与建造者的区别:它的建造过程是不稳定的,二建造者的建造过程是稳定的。 Component定义一个对象接口,可以给这些对象动态的添加职责。 ConcreteComponent 是定义了一个具体的对象,也可以给
阅读全文
摘要:定义:如果将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。 什么时候使用建造者? 主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。 将一个复杂对象的构建与它的表示分开,使得同样的构建过程可以创建不同的表示。如果我们
阅读全文
摘要:工厂方法模式每个具体工厂类只完成单个实例的创建,所以它具有很好的可扩展性。但是在实际的应用中,一个工厂不止会创建单一的产品,而是一系列的产品,这就引入了抽象工厂的概念。解决涉及多个产品系列的问题。 大家都知道利用抽象工厂模式可以切换数据库的访问,那具体怎么做呢?这里介绍两种方式:利用简单工厂改进传统
阅读全文
摘要:工厂方法模式(Factory Method) 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延续到其子类中。 工厂方法模式是简单工厂的扩展,工厂方法把简单工厂的内部逻辑判断转移到了客户端进行,想要增加功能,以前是修改工厂类,现在是修改客户端。 工厂方法模式克服了简单工
阅读全文
摘要:在简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。缺点是违背了“开放-封闭”原则。 示例代码 public class Operation { private double _numberA = 0; priva
阅读全文