随笔分类 - 程序设计与模式
摘要:应用程序分层设计 应用程序分层属于关注点分离的一种形式,可以通过命名空间、文件夹或采用单独的项目来实现。 下图为一个采用分层设计的项目结构 ASPPatterns.Chap3.Layered.Repository依赖于ASPPatterns.Chap3.Layered.Model ASPPatter
阅读全文
摘要:设计模式的概念 设计模式是高层次的、抽象的解决方案模板。可以将这些模式视为解决方案的蓝本而不是解决方案本身。通常是通过重构自己的代码并将问题泛化来实现设计模式。 软件设计中常见的模式大体分为三类: 创建型模式:处理对象构造和引用 结构型模式:处理对象之间的关系以及它们之间如何进行交互以形成更大的复杂
阅读全文
摘要:记录用户的操作 程序的异常堆栈记录 为数据分析提供依据 "Logging日志记录最佳实践:https://www.oschina.net/question/12_44624" "写给开发者:记录日志的10个建议:http://blog.jobbole.com/52018/" "NLog:http:/
阅读全文
摘要:"控制反转原则" "依赖注入" Install Package Unity: "https://www.nuget.org/packages/Unity/" "Github:https://github.com/unitycontainer/unity" Dependency Injection w
阅读全文
摘要:在开发业务层数据的时候,我总是担心数据层给我返回的对象实例为null。 所以,每次使用数据层返回的对象实例我都要判断下是否为null 虽然这样是避免了因为空值引发异常的问题,但是这样增加了客户端代码的很多工作量,而且一旦某个地方忘记判断,我的代码就会出现空异常;为了解决这个问题,我们引入了空对象模式
阅读全文
摘要:如何将实例化具体类的代码从应用中抽离,或者封装起来,使他们不会干扰到应用的其他部分? 静态工厂方法 把具体实例化的过程封装了起来,这已经开始有了面向对象编程的意识了(虽然这里用的是静态方法)。 工厂方法模式 接着上面的例子,我们把动物种类进行抽象,不再让他通同switch判断,下面我们创建动物类的工
阅读全文
摘要:知识点 类应该对扩展开放,对修改封闭。 案例 (本故事纯属虚构) 某日早上,流年刚把新开发的游戏项目提交给经理 (当然这还算不上个游戏),项目经理看了没几分钟,“这什么屌逼玩意?游戏角色都不带装备的!!! 玩家还玩个屁啊”; “那好吧,给角色加把武器?”我弱弱的回了句。 “你个2屌,加个武器就够了?
阅读全文
摘要:知识点 使对象之间达到松耦合的效果。 观察者模式定义了对象之间一对多的关系。主题用一个共同的接口来更新观察者。 观察者和被观察者之间通过松耦合的方式结合,被观察者不用理会观察者的实现细节,只需要观察者实现了观察接口(即所谓的注册)。 示例代码 最后来调用测试一下: 小结 观察者模式定义了对象之间一对
阅读全文
摘要:知识点 找出引用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。 针对接口编程,而不是实现编程。 多用组合,少用继承 示例 1 public interface FlyBehavior 2 { 3 void Fly(); 4 } 5 6 class FlyWithWings:
阅读全文