旧事重提——行为型设计模式总结一
摘要:由于行为型模式比较多,本人打算分两篇博客总结。今天一次介绍解释器、中介者、访问者、策略、备忘录、迭代器模式。解释器:适用场合:如果一种特定类型的问题发生的频率足够高,那么可能就值得向该问题的各个实例表述为一个简单语言中的句子。当有一个语言血药解释执行,并且你可将该语句中的句子表示为一个抽象语法树时,可使用解释器模式。例如机房收费系统中,组合查询中,如果没有在SQL语句中对表中字段起别名,而且也没有使用视图进行中英文转换,那么就可以在UI层中使用该模式,将对应的参数进行解释。解释成对应表中字段。此方发没有没有去实现,只是感觉应该可以实现。中介者:中介者模式,就是通过Mediator类,来接受、发
阅读全文
posted @
2012-02-21 11:39
刘正权的博客
阅读(192)
推荐(0) 编辑
MVC与三层架构
摘要:MVCMVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使MVC应用程序被分成三个核心部件,他们各自处理自己的任务。有人说MVC是观察者模式的一个变种。我感觉也不无道理。因为MVC的应用很广,上网查过资料,不仅仅web开发中广泛使用,swing也是基于MVC开发的一个GUI界面库。MVC分为模型、视图、控制器。模型:模型部件保存由视图显示,由控制器控制数据;模型封装了问题的核心数据、逻辑和功能的计算关系,它独立于具体的界面表达和I/O操作。模型可细分为两个概念:系统的内部状态,能够改变状态的行为。模型与数据格式无关,这样一个模型能为多个视图提供数据。模型是你所有的商业逻辑的代码
阅读全文
posted @
2011-12-03 16:14
刘正权的博客
阅读(284)
推荐(0) 编辑
观察者模式
摘要:观察者模式定义了一种一对多的依赖关系,让多个观察者,为所有的具体观察者定义一个接口,在得到主题的通知时更新自己。问题:一般系统都将一个系统分割成一些列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来大大的不便。观察者模式的优点:观察者模式是依赖倒转原则的最佳体现,它所做的工作其实就是在接触耦合。让耦合的双方都依赖与抽象,而不是依赖于具体。从而使得各自的变化都不会影响另一边的变化。观察者模式的关键对象是抽象通知者和抽象观察者,一个抽象通知者可以有任意数目的依赖它的抽象观察者,一旦通知者的状态发生变化,所有
阅读全文
posted @
2011-12-03 14:43
刘正权的博客
阅读(206)
推荐(0) 编辑
反射
摘要:反射是.net中的重要机制。通过反射,可以在运行时获得.net中每一个类型(包括类、结构、委托和枚举等)成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。反射的用途:(1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。(2)使用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。(3)使用ConstructorInfo了解构
阅读全文
posted @
2011-11-10 11:17
刘正权的博客
阅读(176)
推荐(0) 编辑
设计模式总结
摘要:学习大话设计模式应经有一个月的光景了。学习过程中,就感觉挺好玩的。每一种模式都可以用生活中的小例子恰如其分的诠释出来,就感觉看完小例子之后,再去看模式的的类图,代码的时候,感觉他举的例子对极了,匹配极了……在此期间,我一直有一种心态:“然后呢?”。对,就是“然后呢”,感觉很有意思,同时,我也感觉出来了,这本书凝聚着众多编程高手和设计大师的大智慧。我体味着他们的乐与怒,体味着他们彻夜编写代码的快感。其实,感觉很多设计模式其实就是原则的应用而已,编程时或许在不知不觉中就使用了设计模式。在学习设计模式期间,感觉很多知识,很多模式都明白。讲得明白,听的也明白;等到现在总结再回去看到时候,有感觉对哪一个
阅读全文
posted @
2011-11-09 21:31
刘正权的博客
阅读(148)
推荐(0) 编辑
构造函数、方法重载、属性
摘要:构造函数是类的一种特殊方法,其实它就是对类进行初始化。构造方法与类同名,没有返回值,也不需要void。每次创建类的实例都会调用它,即在new的时候调用。所有类都有构造方法,如果你不编码则系统默认生成空的构造方法,如果你有定义的构造方法,那么默认的构造方法就会失效了。这里所谓的空的构造方法,其实什么也不做,只是为了让你能顺利地实例化而已。Cat cat=new Cat();上面这句代码,new后面的Cat()其实就是构造方法。这里是一个空的构造方法,只是为了让程序能够顺利实例化。再看下面的一句:Cat cat=new Cat("小猫");这时Cat("小猫"
阅读全文
posted @
2011-11-08 20:31
刘正权的博客
阅读(216)
推荐(0) 编辑
计算器设计
摘要:做软件这个行业,我们必须知道,用户的需求是不断变化的,有时候,用户提的要求可能非常不过分,只是改动一些表面的小地方。但是面对已完成的代码,却是需要几乎重头来过的尴尬,实在痛苦不堪。之所以会出现这种状况,就是因为我们原先所写的程序,不容易维护,灵活性差,不容易扩展,更谈不上复用了。面向对象分析设计编程思想,通过封装、继承、多态把程序的耦合度降低,将功能按块儿进行划分,降低彼此之间的耦合度。而设计模式使得程序更加灵活,容易修改,并且易于复用。对于计算器这个程序,我们本可以直接用计算机能够理解的逻辑来描述和表达解决的问题及具体的求解过程。先要求输入两个数和运算符号,然后根据运算符号判断选择如何运算,
阅读全文
posted @
2011-10-26 16:19
刘正权的博客
阅读(221)
推荐(0) 编辑