设计模式
爱拍球的程序圆
保持简单,不管是生活还是程序。编程、打球、阅读,生活中有这三件事不是已经很足够了吗?
展开
-
学习设计模式:简单工厂、模板方法、单例(上)
既然是学习设计模式,就得搭建一个测试各种模式的平台,对于每一个模式去创建一个工程,略显麻烦,把模式分隔开来学习也是不应该的,通过把对每个模式的测试代码集合到一个平台上,可以让学习者更好地理解《设计模式》一书中的许多行话。话不多说,本系列文章就从使用设计模式来实现这样一个测试平台开始吧。原创 2015-01-14 21:27:30 · 739 阅读 · 2 评论 -
学习设计模式:代理模式——洪兴老大不喜欢小布什
代理模式的定义是:为某个对象提供种代理以控制对这个对象的访问。这里所谓的代理是所要代理的对象的一个外覆对象,要想访问真正的对象,必须通过它的外覆类(代理对象),代理对象主要有四种用途:远程代理,为一个对象在不同的地址空间提供局部代表。虚代理,根据需要创建开销很大的对象时,并不是真正立即创建这个对象,而是创建一个包含必要信息的代理对象,只有不得不初始化开销原创 2015-02-03 15:17:59 · 1016 阅读 · 0 评论 -
学习设计模式:简单工厂、模板方法、单例(下)
接上篇,本文将记录去除简单工厂里的switch语句的方法与单例模式的使用,先说如何去除switch语句。 比较简单的实现是在每次程序开始运行为每一个类实例化一个PatternTester子类对象,然后将这个对象与对应的patterType字段一起作为Dictionary数据结构中的一个元素,当客户端请求某个类型的实例对象时,根据指定的patternType原创 2015-01-17 11:53:35 · 658 阅读 · 0 评论 -
学习设计模式:原型,让我们更安全
上一篇博文提到,现在搭建起来的测试平台大多数情况下可以工作得不错,但是还有一个重要缺陷,每次运行的PatternTester子类对象是从testerList中获取的,而在C#中,对象是属于引用类型,赋值过程只是增加了这个对象的引用,任何一个引用上发生的改变都会反映到其他引用上,因此假设我们在客户端(Main函数)中改变了运行中的tester对象,例如令其等于null,那么testerL原创 2015-01-18 21:15:25 · 597 阅读 · 0 评论 -
学习设计模式:工厂方法——简单工厂只是我的另一相
工厂方法与简单工厂非常相似,只要看看《设计模式》一书中对工厂方法的意图的描述就能很清楚地感受到这一点:定义一个用于创建对象的接口(PatternTesterFactory,再具体一点就是PatternTesterFactory类的CreatePattern方法),让子类决定实例化哪一个类(CreatePatternTester方法中的判断语意实现了这一过程)。对于这一意图,有两种方式可原创 2015-01-23 12:48:56 · 630 阅读 · 1 评论