7 范特西科技

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 15w+

设计模式——享元模式

享元模式就是如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用创建新的对象。享元模式是为数不多的、只为提升系统性能而生的设计模式。它的主要作用就是复用大对象(重量级对象),以节省内存空间和对象创建时间。 我们这里以绘制一个有样式的字体来说明吧,有的时候我们想绘制一个纯色的文字,比如红色,那么我们可能需要创建很多的实例,通常来说,这些实例的差别不大,这个时候,我们可

2017-10-07 21:11:06

设计模式——装饰者模式

动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。不改变接口的前提下,增强所考虑的类的性能。 何时使用: 1)需要扩展一个类的功能,或给一个类增加附加责任。 2)需要动态的给一个对象增加功能,这些功能可以再动态地撤销。 3)需要增加一些基本功能的排列组合而产生的非常大量的功能,从而使继承变得 不现实。 实例场

2017-10-06 10:29:59

设计模式——桥接模式

桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。 桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量,桥接模式直白的说就是将深度垂直继承关系拉平转化成横向的一对多或者多对多关联关系 生活场景: 就拿汽车在路上行驶的来说。即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于交通

2017-10-05 15:42:56

设计模式——中介模式

中介模式:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 类图: 中介者模式的结构 中介者模式又称为调停者模式,从类图中看,共分为3部分: 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。 中介者实现类:从抽象中介者继承而

2017-10-04 06:34:16

设计模式——备忘录模式

备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。 使用场景: 在做

2017-10-04 06:33:07

设计模式——代理模式

代理模式使用代理对象完成用户请求,屏蔽用户对真实对象的访问。现实世界的代理人被授权执行当事人的一些事宜,无需当事人出面,从第三方的角度看,似乎当事人并不存在,因为他只和代理人通信。而事实上代理人是要有当事人的授权,并且在核心问题上还需要请示当事人。 在软件设计中,使用代理模式的意图也很多,比如因为安全原因需要屏蔽客户端直接访问真实对象,或者在远程调用中需要使用代理类处理远程方法调用的技术细节 (如

2017-10-03 19:10:22

设计模式——观察者模式

观察者的定义:观察者模式(又被称为发布-订阅模式),属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。 使用场景: A对象(观察者)对B对象(被观察者)的某种变化高度敏感,需要在B变化的一瞬间做出反应。举个例子,新闻里喜闻乐见的警察抓小偷,警察需要在小偷伸手作案的时候实施抓捕。在

2017-09-24 10:49:28

设计模式——建造者模式

建造者模式的定义是:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。本质就是将共同的构造方法高度提炼形成所有对象共有,这样的话不同达到一个方法在不同调用场景下产生不同对象(总流程不变变得只是代码实现)。 使用场景: 楼房是千差万别的,楼房的外形,层数,内部房间的数量,房间的装饰都不一样。但是对于建造者来说,抽象出来的建筑流程是确定的。因为建筑一座楼房,都可以归纳为几

2017-08-13 10:56:23

Clean Code 阅读总结

一、好的代码重要顺序: 1. 经过所有测试的代码 2. 没有重复的代码 3. 体现系统中的全部设计理念 4. 包括尽量少的实体 例如类、方法、函数等等 5. 大师程序员把系统当成故事来讲,而不是当成程序来讲。他们使用选定的工具来构建所要讲的故事。 二、类、方法、字段命名要求 1.类名一般用名词来命名方法一般用动词或者动词短语命名

2017-08-11 17:40:00

设计模式——策略模式

策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得可以根据具体场景来使用不同算法。策略模式使得算法可以在不影响到客户端的情况下发生变化。 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,

2017-08-09 22:29:45

设计模式——过滤模式

过滤模式是开发人员根据业务需求对过滤器进行组合也就是多角度过滤对象,来达到获取聚合的目的。 使用场景: 创建对象的时候需要将对象插入到数据库之前对对象中的字段进行验证,有的对象需要验证一个字段有的需要验证多个字段,这种情况我们可以通过对过滤器进行组合来实现对某一个对象中的一个或者多个属性达到验证的目的。 可以根据对象对不同对过滤器进行组合实现过滤器的插拔式。 代码走起来: 代码所要实现的场

2017-08-07 22:42:09

设计模式——原型模式

原型模式可以动态的创建一个对象而不需要提供专门的new()操作,这无疑是一种非常有效的方式,快速的创建一个新的对象。 一、使用场景: 1、如果说我们的对象类型不是刚开始就能确定,而是这个类型是在运行期确定的话,那么我们通过这个类型的对象克隆出一个新的类型更容易。 2、获取某一个特定状态下的对象,这个前提很重要,这点怎么理解呢,例如有的时候我们需要对比一个对象经过处理后的状态和处理前的状

2017-07-30 11:30:44

设计模式——单例模式

单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 关键点: 1)一个类只有一个实例 2)它必须自行创建这个实例 3)它必须自行向整个系统提供这个实例 一、应用场景 一般数据底层封装的connection db连接、Read File、WCF、Mongodb等非托管资源,因为每一次操作目标对象的时候都需要new一个

2017-07-29 12:38:27

委托和事件理解(转)

众所周知在面试中,经常有些崽子面试官会问些“事件和委托”的关系,也许一路走来的程序员大多都会被问到这个,那么对于这个高频的”事件和委托“问题,如何回击呢?首先我从最经典的一套面试题说起,用事件来实现 “猫爪老鼠“,这是一个从网上copy过来的一个例子。static void Main(string[] args) { Mouse mouse = new Mou

2017-06-16 09:51:16

ManualResetEvent(转)

ManualResetEvent 用于线程同步,通知一个或多个线程某事件已经发生。通常用于一个线程执行的任务必须在其他线程的任务执行之前完成。 ManualResetEvent状态分为两种:终止状态和非终止状态。当某一任务完成时,将ManualResetEvent设置为终止状态,这样其他等待的线程(一个或多个)将开始执行自己的任务。 注意:一旦它被终止,它将保持终止状态,直到它被手动重置。代码示

2017-06-13 19:35:02

ManualResetEven小知识点

关于ManualResetEven简单用法: 一、构造函数 // 摘要: //用一个指示是否将初始状态设置为终止的布尔值初始化 System.Threading.ManualResetEvent 类的新实例。 // 参数: // initialState: // 如果为 true,则将初始状态设置为终止;如果为 false,则将初始状态设置为非终止。 public Man

2017-06-02 16:42:42

C# Quartz作业调度配置

什么是Quartz Quartz是是一个开源的作业调度框架,Quartz根据用户设定的时间规则来执行作业,使用场景:在平时的工作中,估计大多数都做过轮询调度的任务,比如定时轮询数据库同步,定时邮件通知、定时关闭网上商城的用户还未支付的订单等等。Quartz运用场景 作业场景:公司商城平台中客户未支付的订单超过半个小时未支付就要清理掉 1) . 数据库中订单主表主要字段如下: 2) .下

2017-05-28 17:06:22

Thread同步—锁、信号量

一、锁Monitor(控制每个线程之间通信的执行顺) 1. Monitor(控制线程间通信顺序) 说到锁的时候通常都会想到Lock,Lock确实减少了我们不必要的劳动并且让代码更可观,但是如果我们要进行控制每个线程之间通信的执行顺序,则必须使用原生类,这里要注意一个问题就是“锁住什么”的问题,一般情况下我们锁住的都是静态对象,我们知道静态对象属于类级别,当有很多线程共同访问的时候,那个静

2017-05-07 18:59:10

XSS简单预防

原理 跨站脚本(Cross site script,简称xss)是一种“HTML注入”,由于攻击的脚本多数时候是跨域的,所以称之为“跨域脚本”。 我们常常听到“注入”(Injection),如SQL注入,那么到底“注入”是什么?注入本质上就是把输入的数据变成可执行的程序语句。SQL注入是如此,XSS也如此,只不过XSS一般注入的是恶意的脚本代码,这些脚本代码可以用来获取合法用户的数据,如Cook

2017-05-06 19:43:41

Thread常用方法

Join 方法 该方法可以让并发行处理变成串行化,具体看下面代码。 static void Main(string[] args) { Thread thread = new Thread(new ThreadStart(Run)); thread.Start(); thread.Join(); // 该死的t.Join(),害的我主线程必须

2017-05-02 22:39:56

查看更多

勋章 我的勋章
    暂无奖章