开发模式
郗富琦
这个作者很懒,什么都没留下…
展开
-
开发模式之工厂模式
所有的开发模式都是源于现实生活,工厂模式解决了标准供应商问题。比如说我们是拖拉机生产厂家目前的基本功能是能带着车斗满世界运货如图1所示。图1拖拉机基本功能 后来客户提出了新的需求希望可以具有耕地的功能。基于可添加不可修改的原则,我们就添加了新的功能如图2所示。这是一种强耦合的方式,需要在拖拉机内部实现耕地功能。当然在目前条件下还是足够用的。原创 2012-06-12 17:39:28 · 1327 阅读 · 0 评论 -
观察者模式
Observer模式即观察者模式,该模式的作用是观察者(Observer)能实时知晓被观察主体(Subject)的变化。实现实时知晓主体变化可有多种方式,常用的有主动查询和被动通知两种方式。主动查询可采用Observer实时轮询Subject状态的方式,但缺点是抢占CPU资源,作为单一功能的嵌入式软件可以使用,但是用在多任务系统中,用户是无法忍受的;被动通知可通过协商解决,当subject特定状态原创 2014-01-06 14:39:31 · 1788 阅读 · 0 评论 -
观察者模式-Event实现方案
书接上文,委托是.Net Framework提供的类型安全的回调机制。委托本质上是类,类里面实现了带有方法指针的构造函数、Invoke、BeginInvoke和EndInvoke四个方法。当然这些工作都是CLR和编译器帮助我们完成的。事件建立在委托的基础上。CLR偷偷地帮我们把一个事件转换为一个私有字段和两个公有方法。一个私有字段是私有委托字段,两个公共方法是对委托字段的增加和移除的线程安全调用。原创 2014-01-07 11:13:42 · 1528 阅读 · 0 评论 -
回溯法-01背包问题之二:顺序执行模式
上文已讲述了回溯法以及01背包问题的原理,本文讲述如何顺序执行解决01背包问题以及通过模板模式重构软件。一、顺序执行流程图图1无剪枝函数的01背包问题顺序执行算法流程图图2 有剪枝函数的01背包问题顺序执行算法流程图无剪枝函数是通用的深度遍历算法,为了减少搜索深度可通过剪枝函数处理完全不可能的分枝。与递归方案的区别主要表现在i>=n后需要“回溯”,即用后进先出的方式将物原创 2014-05-09 15:24:55 · 4642 阅读 · 0 评论