摘要: 观察者模式概述:在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系... 阅读全文
posted @ 2014-04-19 10:47 Carl --卡尔 阅读(932) 评论(2) 推荐(1) 编辑
摘要: 命令模式(Command Pattern) 概述 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,可... 阅读全文
posted @ 2014-04-18 16:35 Carl --卡尔 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 模板模式模板模式举例:模拟下数据库的update方法,先删除在插入。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647abstractclassSqlManage{publicst... 阅读全文
posted @ 2014-04-17 09:37 Carl --卡尔 阅读(479) 评论(0) 推荐(0) 编辑
摘要: 代理模式概述:在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。这就是本文要说的Proxy模式。结构图:举例: 代练游戏,玩游戏,自己... 阅读全文
posted @ 2014-04-16 12:46 Carl --卡尔 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 概述: 面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题。但是在某些情况下,对象的数量可能会太多,从而导致了运行时的代价。那么我们如何去避免大量细粒度的对象,同时又不影响客户程序使用面向对象的方式进行操作?享元模式j就可以让我们更好的复用我们内存中已存在的对象,降低系统创建对象实例... 阅读全文
posted @ 2014-04-15 08:25 Carl --卡尔 阅读(249) 评论(2) 推荐(0) 编辑
摘要: 概述: 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?这就是要说的Façade模式。 为子系统中的一组接口提供一个一致的界面,Facade模式定... 阅读全文
posted @ 2014-04-14 14:27 Carl --卡尔 阅读(728) 评论(0) 推荐(0) 编辑
摘要: 概述: 组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。将对象组合成树形结构以表示“部分-整体”的层次结构。Composite模式使得用户对单个对象和组合对象的使用具有一致性。[GOF《设计模式》]结构图:举例: 假设我们公司有做个打卡的程序,能满足各种打卡的需要,比如整个公司能打卡,个人也能打卡(外包人员一个人支起一片天)。我们看看用组合模式是怎么实现的,这里不就讲怎么演化的了!演化的过程比较容易误导。12345678910111213141516171819 阅读全文
posted @ 2014-04-13 11:57 Carl --卡尔 阅读(665) 评论(0) 推荐(2) 编辑
摘要: 概述: 装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式的特点:(1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以和真实对象相同的方式和装饰对象交互。(2) 装饰对象包含一个真实对象的引用(reference)(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。结构图:举例:假设我... 阅读全文
posted @ 2014-04-12 21:46 Carl --卡尔 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 在浏览器中展示页面;http://192.168.1.100/1.htm为目标地址1 browser.Navigate(new Uri("http://192.168.1.100/1.htm", UriKind.Absolute));浏览器接受页面的值在页面上放两个按钮1 <input type="button" value="10086" onclick="window.external.notify('phone|10086')"/>2 <input type="bu 阅读全文
posted @ 2012-08-25 21:00 Carl --卡尔 阅读(1529) 评论(5) 推荐(1) 编辑
摘要: --局部临时表:--临时表的表名有一个前缀#--临时表只对当前会话有效,只要将连接断开,再次打开则临时表就没有了。--如果临时表是在存储过程中创建的,则当存储过程执行完毕,则自动销毁。类似于c#变量的作用域范围。----全局临时表:--前缀##--多个会话中可以共享全局临时表--只有创建该表的会话断开时才会删除全局临时表,如果这时,正有其他会话在访问该临时表,则会等待该会话结束后删除临时表。create table #student(username nvarchar(10),age int)create table ##quanjustudent( username nvarchar(10) 阅读全文
posted @ 2012-08-25 10:08 Carl --卡尔 阅读(984) 评论(0) 推荐(0) 编辑