代码改变世界

随笔分类 -  C#

C#设计模式——单件模式

2013-12-10 14:15 by y-z-f, 987 阅读, 收藏, 编辑
摘要: 一、为何需要单件模式需求我们开发了一个大型的项目,其中存在许多的工具类。但是其中很多的工具类我们并不是经常使用得到,甚至一次都不会使用。但是这些工具类都是静态的类,会消耗很多的内存,即使一次都不使用。这个时候我们需要一种方式可以解决这个问题。意指只有我们使用到这个工具类的时候才实例化,并且在以后的使用中总是返回首次实例化的对象而不是重复的实例化新的对象。方案我们采取的方案是将类默认的构造方法设置为保护类型,这样使用者就无法直接实例化这个类,然后我们在公开一个静态的方法,用于将本身返回给使用者。其中涉及判断当前的类是否已经被实例化的逻辑代码,如果当前的类已经被实例化,则直接返回自身。否则实例化自 阅读全文

C#设计模式——抽象工厂

2013-12-06 10:29 by y-z-f, 615 阅读, 收藏, 编辑
摘要: 一、引言 我相信看到这段文字的人,都具备了良好的技术功底。但是对于自己编写的代码总是充满抱怨,希望能够将自己编写的代码如同房子一般先进行有效的设计,然后在进行建设。那么这篇文章能够给你一些思路,这里特别的说明只是思路,因为你可以根据实际组合改变使用这里介绍的所有设计模式,而不是跟遵守规章一样,一丝不苟。下面我们就开始按照三种类型的设计模式进行阐述。二、创建型 在我们的代码中时时刻刻都充斥着创建对象,但是你曾今有无思考过,你的对象可以这么创建,也可以那么创建。同时还可以随时随刻切换。这是不是难以置信?下面我们将会挖掘这其中的奥秘。抽象工厂模式1.1 这里我们将会以一个功能来说明其... 阅读全文

telerik的RadGrid控件安全(页面中无ID、字段名)的设计后台前台

2013-05-03 19:39 by y-z-f, 2712 阅读, 收藏, 编辑
摘要: 以下内容基于RadGrid控件一、从数据源头保密 如果使用RadGrid细心的同志一定会发现生成的网页源代码中会出现你绑定在DataField的字段名称,而这个是初始化的步骤。所以我们在从数据库select出数据的时候就必须把每个数据的字段名给AS掉,并且as后的名称尽量不要与真实的字段名太相似,这样就可以避免有意的人获取那些字段的名称从而进行更有力的攻击。二、不让主键有出现的机会 一般这个情况都会出现在懒惰,或者短时间内需要完成的项目,为了方便会直接把主键放在前端,这样就可以直接传递给后台。但不知这样的危险是很大的,有意的人可以改变这些主键的ID,或者使用这些主键的ID进行恶意的攻击。这里我 阅读全文