摘要: PⅠ从事某一个行业, 难免会或多或少的影响你的某些观念或则看待问题的角度.这篇随笔的很多观点都是即时感悟并记录下来, 日后有新的理解也会慢慢充实.一般来说, 我们都是用世界来作为计算机模拟的标杆, 用建筑的眼光来评判软件, 用工程化的原则来管理项目进程. 所以, 严格来说, 计算机是一门技术, 而不是纯粹的科学. 计算机有关的所有的概念都是创造发明的, 而不同于数学, 物理, 化学等需... 阅读全文
posted @ 2009-07-28 01:26 Tyrael 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 惯例, 先帖参考[1][2][3][4].记得第一次看<Design Patterns>的时候, 被类与类之间的引用调用设计弄得不是一般的糊涂. 很多情况下是你引用我, 我引用他, 他调用你... 最后总结出一条正确且无聊的规律: 给我你的引用, 我就能完全控制你...2年后...设计的一个原则就是封装变化. 所以为了应对访问方式的多样化, 我们封装了对对象的访问方式(Object.A... 阅读全文
posted @ 2009-07-02 17:41 Tyrael 阅读(251) 评论(0) 推荐(0) 编辑
摘要: Preview2.2 Demo2.2.1 Common scenarioInterface & Implement class:[代码]如果我们是创建接口代理, 那么接口一定要是public. 实现类理论情况下可以不为public, 我在使用CreateInterfaceProxyWithTargetInterface创建proxy的时候, 实现类确实可以不为public, 但使用Crea... 阅读全文
posted @ 2009-06-29 00:25 Tyrael 阅读(1447) 评论(1) 推荐(0) 编辑
摘要: PⅠ, Introduction最近对AOP比较感兴趣, 下载了一个.net下的AOP框架实现(Castle.DynamicProxy), 关于怎么使用, 网上大部分都是有关1.x版本的, 我们当然倾向于使用最新的2.1版本. 链接[1]是Castle官网推荐的使用说明, 本文主要是记录其核心和我的一些体会. DynamicProxy确实非常强大.PⅡ, On The Wa... 阅读全文
posted @ 2009-06-28 14:31 Tyrael 阅读(4180) 评论(4) 推荐(0) 编辑
摘要: 一篇不错的有关AOP概念的文章[1].在典型的OO设计中, 如果一段概念需要在很多地方被反复执行, 我们一般是把这段概念抽象成方法或者类, 然后在需要的地方依次嵌入方法(类)调用. 这样有2方面的缺点: 代码重复(调用处)和附加依赖(需求方法内部嵌套了额外的方法, 有关这类问题参考'修改代码的艺术'). AOP作为OO思想的延伸, 可以解决上面出现的问题. AOP最大的好处之一就是将核心面与附加面... 阅读全文
posted @ 2009-06-26 13:24 Tyrael 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 1. 引RSA算法以公/私钥为基础. 数据经公钥加密后只能通过私钥解密, 反之亦然. 比如, A传递信息给B, 我们需要2方面的保证: 信息安全和身份确认. 在A端, 我们可以将信息用B的公钥加密, 然后将签名用A的私钥加密; 在B端, 用B的私钥解密信息, 用A的公钥解密签名.2. 概念强程序集名包含4部分, 简名, 版本号, 语言, 签名. 其中签名以公钥形式标注, 用来解密由私钥加密的程序集... 阅读全文
posted @ 2009-06-25 15:21 Tyrael 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 6. 提取并重写调用和第四条类似, 只不过封装的是变量的访问.原始代码:[代码]重构:[代码] 我们把测试方法内部依赖的对象叫'问题对象'. 如果问题对象上只有唯一一个方法的话, 提取并重写调用比较容易, 但如果同一对象上有多个问题方法的话, 我们可能就需要下面的手法了--提取并重写获取方法.7. 提取并重写获取方法原始代码:[代码]重构:[代码]类似抽象工厂, 可以把每一个问题方法看做一个产品类... 阅读全文
posted @ 2009-06-23 19:02 Tyrael 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 2年前在实习的时候买了这本书,当时就随便翻了翻,也没看懂太多; 最近比较轻松,碰巧比较关注代码质量,一口气就把这书读完了。 这本书虽然关注点比较窄(重构代码,解开依赖,方便测试),但在这方面就众多情形提出了各自的解决方案,不得不说作者富有相当的代码洞察能力和实践经验。总的来说是本好书。下面是我自己的一点体会:PⅠ,概念和原则1. 测试有关测试代码并不难写, 它毕竟也只是代码, 胡乱一通... 阅读全文
posted @ 2009-06-23 15:05 Tyrael 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 哲学家说: 世界充满了矛盾. 软件工程师说: 世界充满了2面性, 矛盾仅仅是2面性泛化出来的特殊关系.如果你想更好地解决问题, 起始点就是要看清问题的2(多)面性, 并思考解决方案的多面性.对于软件开发人员来说, 我们对于Push模式应该再熟悉不过了,方法的调用, 参数的传递多半都属于这类. 下面是简单介绍(大部分来源于网络):1. 定义1.1 推(push)模式是一种基于客户器/服务器机制、由服... 阅读全文
posted @ 2009-06-16 21:26 Tyrael 阅读(1438) 评论(0) 推荐(0) 编辑
摘要: 模式有很多贡献, 作为一份人类数十年来工程经验的总结, 且不论它实际的指导意义: 该做什么, 怎么做; 模式的存在, 更大的意义在于它提供了一种沟通方式.世界仿佛必然走向统一(这是我4年wow的体会). 常想起古人云: 世界分久必合, 合久必分.到底是先有合还是先有分呢?为了'和世界接轨', 我们实在承受了太多, 且不论自然科学苛刻的演算, 社会科学之间的复杂关系也越来越理不清. 这个时代, 注定... 阅读全文
posted @ 2009-06-15 16:51 Tyrael 阅读(175) 评论(0) 推荐(0) 编辑