随笔分类 - Design Pattern
摘要:使用 Spring 来做依赖注入 首先在 Core 层配置 xml 之后 在 Controller 层配置 关联到 Core 的 xml 配置 启动项目的 Web.config 在 启动项目中 引用 程序集 Spring.Core (Common.Logging, Common.Logging.Co
阅读全文
摘要:SRP 单一职责原则 一个类应该只有一个发生变化的原因 OCP 开放-封闭原则 软件实体 应该是可以扩展, 但是不能修改 对扩展开放, 对修改关闭 LSP 里式替换原则 子类型必须能够代替掉他们的基类型 其中子类与基类的关系不一定是 单纯的 is-a 关系. is-a 应该就行为方式而言, 就是看具
阅读全文
摘要:问题:设计一种子类继承超类的模式原方案:public class Duck{ void quack(){} void swim(){} void display(){} void fly(){}}public class MallardDuck : Duck{ void...
阅读全文
摘要:问题:一个对象在处以不同状态时, 如何在对待同一方法时能有不同的处理方式原方案:public class Machine{ int stateA = 1; int stateB = 2; int stateC = 3; // ..... int State = stat...
阅读全文
摘要:问题:当使用遍历方法对一个集合对象遍历时, 如果这个集合包含的不仅仅是"项", 也可能包含另一个集合, 那么对"项"的遍历方法在集合上可能不通用所以:我们将 集合 和 项 都进行统一对待.为它们都建造相同的方法, 已达到在遍历或者其他操作中不需要考虑 集合 当中时候含有不一样的元素public ab...
阅读全文
摘要:问题:面对多个集合对象(不一定使用相同集合容器)时, 如何设置使其 遍历和操作统一化public class AMenu{ ArrayList menuItems; public AMenu() { menuItems = new ArrayList(); ...
阅读全文
摘要:问题:许多含有相同步骤 但又细节不用的类所以:讲相同的步骤 抽象为基类, 子类覆盖那些细节不同的方法public abstract Base(){ void Start() { A(); B(); C(); } void A() ...
阅读全文
摘要:需求:将一系列复杂操作 (流水操作) 简化为一个单一的操作接口
阅读全文
摘要:需求:现有的需求对应不上已经存在的接口的时候所以:用一个适配器类来适配 Duck 和 Turkey 不一样的接口interface Duck{ void quack(); void fly();}interface Turkey{ void gobble(); void fl...
阅读全文
摘要:需求:确保全局共用一个实例, 避免所有不同对象调用造成结果不可知原方式:public static object Resource { get; set; }问题:实例在一开始就被创建, 有时候是不需要的所以:单例模式:public class Singleton{ private objec...
阅读全文
摘要:需求: 披萨店提供披萨原方式:public class PizzaStore{ public Pizza orderPizza() { Pizza pizza = new Pizza(); pizza.prepare(); pizza.bake(...
阅读全文
摘要:简介: IOC(控制反转)模式 是设计模式的一种 主要的目的用来解除一个类对另一个具体类的依赖.使其不受需求变化的影响, 同时兼顾所有相同类型的对象. 一个明确直接引用某个对象的形式: 假设变动需求, 则需要改动调用者. 频繁改动会增加维护负担: 实际上, 调用者都是需要 被调用这(A or B)完
阅读全文