软件开发的不变真理就是:CHANGE ;
设计原则:
找出应用中可能会出现变化的部分 ,取出并封装起来 ,以便以后可以轻易地改动或扩充此部分 ,而不影响不需要变化的其他部分 。
多用组合 ,少用继承 。 (使用组合建立系统具有很大的弹性,不仅可以将算法族封装起来,更可以"在运行时动态地改变行为"。只要组合的行为对象符合正确的接口标准即可。)
针对接口编程,不针对实现编程。
为了交互对象之间的松耦合设计而努力。
类应该对扩展开放,对修改关闭。 虽然有点矛盾,但的确有些技术可以允许在不直接修改代码的情况下,对其进行扩展.在选择需要被扩展的代码部分时需要小心.每个地方都采用开放-关闭原则,是一种浪费,也没必要,还会导致代码变得复杂并且难以理解.
要依赖抽象,不要依赖具体类。 (依赖倒置原则 Dependency Inversion Principle)
策略模式 定义了算法族,分别封装了起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
观察者模式 定义了一系列对象之间的一对多依赖关系。当一个对象改变状态,其他依赖者都会收到通知并自动更新。
装饰者模式 动态地将责任附加到对象上。想要扩展功能,装饰者模式提供了有别于继承的另一种选择。
工厂方法模式 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
抽象工厂模式 定义一个接口,用于创建相关的或依赖对象的家族,而不需要明确指定具体类。
命令模式 將请求封装成对象,这可以让你使用不同的请求,队列,或者日志请求来参数化其他对象。命令模式也可以支持撤销操作。
适配器模式 将一个类的接口,转换成客户期望的另一个类的接口。适配器可以让原本接口不兼容的类合作无间。