算法和设计模式
文章平均质量分 80
SunnyBoy
从事.Net软件开发,现就职于某国内知名在线旅游电商公司
展开
-
关于时间比较的一个算法
前些时间在做老师布置的一个CRM项目,其中项目里需要做一个日程相关提醒的功能,想一想如果是用Timer控件每隔一秒不停的执行轮询定时 时间列表的话,也不是一个很好的设计思路,至少效率不是很好,最后老师给我们提了一个MSDN上的时间比较算法,让我们自己研究,然后再运用到项目里去,随后就在MSDN上找到了具体这个算法实现,用起来还是比较的灵活,至少我认为是这样,下面是具体的实现:原创 2011-06-10 00:14:00 · 1721 阅读 · 0 评论 -
面向对象设计模式之AbstractFactory抽象工厂模式(创建型)
动机:在软件系统中,经常面临着“系列相互依赖的对象”的创建工作:同时,由于需求的变化,往往存在更多系列对象 的创建工作;如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合? 意图:提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。 适用性: 一个系统要独立于它的产品的创建、组合原创 2012-02-24 09:54:29 · 463 阅读 · 0 评论 -
面向对象设计模式之Singleton单例模式
动机:在软件系统中,经常有这样的一些特殊的类,必须保证它们在系统中 只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率 意图:保证一个类仅有一个实例,并提供一个该实例的全局访问点 UML图: 示例代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; na原创 2012-02-24 09:32:13 · 663 阅读 · 0 评论 -
面向对象设计模式之Decorator装饰模式(结构型)
动机:对象应对某种功能的增加或细微的变化,就要做对其本身或者子类做很大的变化,致使子类急剧 膨胀;如何使对象功能的扩展根据需要在运行时动态的实现?如何避免扩展功能的增多带来子类的膨胀问题,从而使任何功能的变化导致的影响降为最低 意图:运行时动态地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类更为灵活 解决主体类在多个方向的扩展 可使用性: 在不影响其他对象原创 2012-02-24 10:58:00 · 799 阅读 · 0 评论 -
面向对象设计模式之Composite组合模式(结构型)
说明动机: * 在面向对象系统中,我们常常会遇到一类具有“容器”特征的对象——即他们在充当对象的同时 * ,又是其他对象的容器。例如: * public class SingleBox:IBox public class ContainerBox:IBox * { { * public void Pro原创 2012-02-24 10:47:43 · 646 阅读 · 0 评论 -
面向对象设计模式之Adapter适配器模式(结构型)
动机:在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口使这些现存对象所不满足的。如何应对这种“迁移的变化”?如何即能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口? 意图:将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 可适用性: 你想使用一个已经存原创 2012-02-24 10:26:45 · 619 阅读 · 0 评论 -
面向对象设计模式之Prototype原型模式(创建型)
意图:使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象 可适用性: 当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者 为了避免创建一个与产品类层次平行的工厂类层次时;或者 当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。 UML图解: 示例代码: using Syst原创 2012-02-24 10:14:59 · 773 阅读 · 0 评论 -
面向对象设计模式之Builder生成器模式(创建型)
动机:在软件系统中,有时候面临着“一个复杂对象”的创建工作, 其通常由各个部分的子对象用一定的算法构成;由于需求的变化, 这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起 的算法却相对稳定;如何应对这种变化?如何提供一种“封装机制”来隔离复杂对象的各个部分的变化,从而保持系统中的“稳定构建算法不随需求的 改变而改变 意图:将一个复杂对象的构建与其表示相分离,使得同样的构建过程原创 2012-02-24 10:08:19 · 632 阅读 · 0 评论 -
面向对象设计模式之FactoryMethod工厂方法模式(创建型)
动机:当一个类不知道它所必须创建的对象的类的时候。当一个类希望由它的子类来指定它所创建的对象的时候。 当类将创建对象的职责委托给多个帮助子类中的某一个, 并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。 意图:定义一个用于创建对象的接口,让子类决定实例化 哪个子类。FactoryMethod使得一个类的实例化延迟到子类 UML图: 示例代码:演示说明 ,一个汽车测试软件系统 Fa原创 2012-02-24 09:44:04 · 694 阅读 · 0 评论 -
面向对象设计模式之Bridge桥接模式(结构型)
问题分析:假如我们需要开发一个同时支持PC和手机的坦克游戏,游戏在PC和手机上功能都一样,都有同样的类型,面临同样的功能需求变化,比如坦克可能有多种不同的型号:T50,T75,T90..对于其中的坦克设计,我们可能很容易设计出来一个Tank的抽象类,然后各种不同型号的Tank继承自该类,但是PC和手机上的图形绘制、声效、操作等实现完全不同...因此对于各种型号的坦克,都 要提供各种不同平台上的坦克原创 2012-02-24 10:38:12 · 2463 阅读 · 0 评论