摘要:
工厂方法模式工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法是一个类的实例化延迟到其子类。工厂方法模式UML结构图工厂方法模式结构代码 /// /// 声明'Product' 抽象类 /// abstract c... 阅读全文
摘要:
代理模式:代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。UML结构如下图:代码实现: //定义一个Subject 抽象类 public abstract class Subject { public abstract void Request()... 阅读全文
摘要:
装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式结构图:装饰模式实现代码: /// /// 声明一个Component的抽象基类 /// abstract class Component { ... 阅读全文
摘要:
模板方法是一种常见的设计模式,它定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。UML图:具体实现代码:namespace TemplateMethod{ class Program { static... 阅读全文
摘要:
1、索引器(Indexer):索引器允许类或者结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于他们的访问采用参数。最简单的索引器的使用 /// /// 最简单的索引器 /// public class IDXer { privat... 阅读全文
摘要:
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。我们来看一下单例模式下的饿汉模式代码:... 阅读全文
摘要:
策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类直接的耦合。UML 图:根据《大话设计模式》——第二章 商场促销这个案例代码来简单的记录一下策略模式的使用方式: /// ... 阅读全文
摘要:
最近几日,重温了一下《大话设计模式》这本书,当时读的仓促,有很多没有注意的地方,现在仔细翻看起来,发现这值得细细品味的一本书!!好东西就要记下来!!!第一章笔记:从一个简单的计算器程序来看简单工厂模式。变化的地方就要封装,用一个单独的类来做创造实例的过程这就是工厂。UML图: /// ... 阅读全文
摘要:
我们在做Ajax 异步请求的时候,一般都会利用一个动态的 Gif 小图片来制作一个Ajax Loading ,以便增加用户体验。今天在网上发现了一个 Spin.js ,该 js 脚本压缩后5k,可以不用任何图片,任何外部的CSS样式,就可以创建一个Ajax Loading 指示器,且兼容以下浏览器:Spin.js 的在线设计、演示及下载地址为:http://fgnass.github.io/spin.js/我们可以在链接页面中,动态设置样式同时会自动生成样式的配置脚本:Spin.js 用法极其的简单:显示spinner//target为显示spiner的父容器var target=docume 阅读全文
摘要:
最近的项目中也要用到一个局部图片放大的功能,园子里面一搜,发现(菩提下的杨过)杨大侠已经实现了。请参见这里:http://www.cnblogs.com/yjmyzz/archive/2009/12/03/1615988.html杨大侠已经给出了原理、知识要点、尺寸要点及后端主要代码,但遗憾的是没有给出xaml的代码。按照杨大侠文中的提示,动手用WPF实践了一下,花了一个小时,终于搞出来了。这篇文章也就算是一个补充吧。界面如下图所示:实现的原理和用到的知识点请点击上面的链接,杨大侠已经说的很清楚了。这里主要强调的就是尺寸要点:右侧大图可视区域与左侧半透明矩形的“长宽比例”应该相同“图片原始尺寸 阅读全文
摘要:
最近项目中用到了行转列,使用SQL SERVER 提供的PIVOT实现起来非常容易。官方解释:详见这里可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表。PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列值。其实PIVOT 就是行转列,UNPIVOT就是列转行。PIVOT 的完整语法为:SELECT ,[第一个透视的列] AS ,[第二个透视的列] AS ,...[最后一个透视的列] AS ,FROM()AS PIVO 阅读全文
摘要:
protected override void WndProc(ref Message m){ if (m.Msg==0x112) { switch ((int) m.WParam) { //禁止双击标题栏关闭窗体 case 0xF063: case 0xF093: m.WParam = IntPtr.Zero; break; //禁止拖拽标题栏还原窗体 case... 阅读全文
摘要:
最近在上网的时候,发现了这个C# 下的 OutlookBar 控件,看了一下感觉还真不错,特此记录一下。using System;using System.Drawing;using System.Windows.Forms;namespace OutLookBarDemo{ internal class BandTagInfo { public OutlookBar outlookBar; public int index; public BandTagInfo(OutlookBar ob, int index) { ... 阅读全文
摘要:
在CSS中,Position 属性经常会用到,主要是绝对定位和相对定位,简单的使用都没有问题,尤其嵌套起来,就会有些混乱,今记录总结一下,防止久而忘之。CSS position 属性值:absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。relative:生成相对定位的元素,相对于其正常位置进行定位。因此,"left:20" 会向元素的 LEFT 位置添加 阅读全文
摘要:
RAID 廉价冗余磁盘阵列 :是 Redundant Arrays of Independent Disks 的简称。磁盘阵列可以分为软阵列和硬阵列两种。软阵列就是通过软件程序来完成,要由计算机的处理器提供运算能力,只能提供最基本的RAID容错功能。硬阵列是由独立操作的硬件(阵列卡)提供整个磁盘阵列的控制和计算功能,卡上具备独立的处理器,不依靠系统的CPU资源,所有需要的容错功能均可以支持,所以硬阵列所提供的功能和性能均比软阵列好。作为高性能的存储技术,RAID巳经得到了越来越广泛的应用。RAID的级别从RAID概念的提出到现在,巳经发展了很多个级别,但是最常用的是0、1、3、5四个级别。下面 阅读全文