- 浏览: 56748 次
- 性别:
- 来自: 北京
最新评论
文章列表
insert into role values (1,0,'guest','默认')
insert into role values (2,1,'dept','普通司局')
insert into role values (3,2,'dept','管理员')
select * from operation
insert into operation values(1,'登陆','')
insert into operation values(2,'浏览','')
insert into operation values(3,'新建','');
insert into operation val ...
- 2008-07-07 17:33
- 浏览 791
- 评论(0)
6月份把《Head First Design Pattern》 看完了。
接下来7月份看《重构》
还想把jive 弄一遍啊。尽量快点就一两个月吧。
还想弄弄算法,看一下《代码大全》
接下来是时候看看《测试驱动开发》了。
还有《Oracle 9i & 10g编程艺术
》,数据库方面的东西一向比较感兴趣。
还有.net 本身的技术需要弄一下。LINQ,或者enterprise library什么的。
- 2008-07-01 10:43
- 浏览 648
- 评论(0)
状态模式 state
- 博客分类:
- [随笔分类]设计模式
状态模式:允许对象的内部状态改变时改变它的行为,对想看起来好像修改了它的类。
状态模式和策略模式比较相似(类图就完全一样),都是A对象关联B对象,而B是可以更换的,A对象的功能随着B的具体实现的改变而改变。策略模式一般都是B对象在A对象所在的上下文中改变。而状态模式则是在B对象(状态对象)完成一定的操作在B对象内部吧A关联的B的具体实现更换。对于A来说就像是一个封闭的机器,内部实现了一套状态转换的流程而无需外界的干涉。
下面是一个糖果机的例子。先讨论四种状态,有25分钱,没有25分钱,售出,售罄。然后扩展一个赢家状态。
基本方法有 插入硬币,退出货币,摇动手柄,发出糖果。<!- ...
- 2008-06-28 01:48
- 浏览 685
- 评论(0)
绪论
特性(Attributes)是一种崭新的声明性信息。我们不仅可以通过特性来定义设计层面的信息(例如help file, URL
for documentation)以及运行时(run-time)信息(例如使XML与class相联系),而且我们还可以利用特性建立自描述(self-describing)组件。在这篇教程中,我们将会看到如何建立和添加特性到各种程序实体以及如何在运行时环境中获取特性信息。
定义
正如MSDN中所描述的那样-----
“特性是被指定给某一声明的一则附加的声明性信息。”
使用预定义(Pre-defined)特性
在C#中,有一个小的预定义特性集合。在学习如何建立 ...
- 2008-06-27 13:35
- 浏览 650
- 评论(0)
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而有不暴露起内部的表示。 【Head First design pattern】
下面来分析一个Demo:
这个就是"聚合对象中的元素"。<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--> class ItemFir:I ...
- 2008-06-25 16:01
- 浏览 654
- 评论(0)
策略模式:定义算法族,分别封装起来,让他们可以互相替换,从而使算法的变化独立与算法的使用者。类图:
比如说有一个类,需要用到排序,而排序方式自然是多种多样的,显然在这个类中直接用一个方法进行排序是不太好的做法,因为它不能做到在不同情况下使用不同的算法排序。我们怎样应对这中不同的需求呢。我们可以把不同的排序方法封装到不同的类(排序类)中,这些类实现一个共同的接口(排序接口)。 "使用排序的类"拥有"排序接口"类型的引用。在我们需要更换排序方法是我们可以是用一个Set方法把具体的排序对象与这个引用关联。
示例:
下面来做一个可以随意更换算法的S ...
- 2008-06-24 12:48
- 浏览 659
- 评论(0)
外观模式 facade
定义:提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。示意图:
应用场景:clients 对Subsystem Classes的调用有时是很繁杂的,而这些复杂的调用逻辑对于Clients是不必要的。我们可以把复杂的调用逻辑分装到Facade,然后通过Facade间接调用。
实现目标:1。简化调用
2。封装变化 如果clients 直接调用Subsystem classes,一旦调用方式需要改变。那么这种改变将设计到系统中的所有Client。如果 ...
- 2008-06-20 12:09
- 浏览 682
- 评论(0)
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。
类图:
用最直白的话说就是:正写着ClassA的代码的时候发现我要实现的功能很大一部分都在ClassB里已经实现了。那好直接拿着来用呗。但别人调用的时候要的是ClassA不是ClassB啊,当然你的设计不是那么僵化的话需要的会是IClassA。那行你不是要IClassA吗,ClassA实现IClassA接下来重复的代码就不写了,把工作都委托给ClassB吧。
鸭子接口<!--<br />
<br />
Code highlighting produced by Acti ...
- 2008-06-19 13:49
- 浏览 741
- 评论(0)
概述:我们很多时候需要一个类只产生一个实例。类似双击金山词霸一个金山词霸的进程运行起来了,然后你在双击并没有在运行一个新的进程。运行两个程序除了浪费资源以外没有任何其他作用。另外有时后生成多个对象还会出现意想不到的问题。
单件模式:确保一个类只有一个实例,并提供一个全局访问点。
实现分析:要保证只有一个实例,就不能让客户代码能够 new 出这个类的一个对象来。而应该让这个类本身来管理对象的实例化,如果没有生成对象就生成一个新对象,已经存在就把这个对象 return 出去。
namespace singleton{ public
- 2008-06-19 09:35
- 浏览 711
- 评论(0)
uml: powerdesigner 可以正向工程,逆向工程。uml 图还可以保存成图片。
数据库设计:powerdesigner
代码生成:codesmith
正则表达式测试:mtracer
bug 跟踪:bugfree
版本管理:vss
浏览器跟踪:httpwatch
- 2008-06-19 00:32
- 浏览 610
- 评论(0)
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->lock (thisLock)
{
// Critical code section}
thisLock 应该是引用类型,但(object)1 将不会真正起到作用。因为进入lock 代码块时会在 thisLock中加入一个标示符。只要在这个th ...
- 2008-06-17 17:40
- 浏览 574
- 评论(0)
定义: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。(网上很多地方引用的定义) 将请求封装成对象,以便使用不同的请求、队列或日志来参数化其他对象。命令模式也支持可撤销的操作。 (Head First 的定义) 解读: 请求说的更傻一点就是求别人为自己服务,对应到程序中,向别人提供服务的话好像离不开方法,请求大概就是对方法的调用了。不过请求这个词语,感觉有点怪怪。因为我调用B对象的C方法,不怎么像是向B请求C倒是像强制B执行C,B有不执行C的权利吗?(当开个玩笑)。提到 ...
aa.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
把它放在桌面
你会惊奇滴发现,原来的文件夹变成了 “我的电脑”
嘿嘿。。。。~你怎么点它都只会进“我的电脑”了。。。。
回收站:
{645ff040-5081-101b-9f08-00aa002f954e}
拔号网络:
{992CFFA0-F557-101A-88EC-00DD010CCC48}
打印机:
{2227a280-3aea-1069-a2de-08002b30309d}
控制面板:
{21ec2020-3aea-1069-a2dd-08002b30309d}
网上邻居:
{2 ...
- 2008-06-11 17:05
- 浏览 705
- 评论(0)
意图[gof 设计模式]:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
我们经常会碰到这样一种情况,我们需要一系列的平级对象来共同完成一种服务。对象的变化更多的是系列间的变化,而不是系列对象内部关系的变化。比如说数据库操作相关类。命令对象,链接对象,适配器对象。我们需要增加一种新数据访问相关对象的可能性比较小。但是从mssql 命令对象,连接对象....到oracle命令对象,连接对象....的可能性则大得多。那么怎样实现一种面向在系列对象变化方向扩展性的解决方案呢。答案就是抽象工厂。
下面来分析一个具体情景:
假如我要一个html 生成器,生成的ht ...
- 2008-06-10 17:29
- 浏览 784
- 评论(0)