1. 找到应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。 
   把变化的部分取出来并封装起来,以便以后可以轻易地改动或扩展此部分,而不影响不需要变化的其他部分。 
2. 针对接口编程,而不是针对实现编程 
   从一开始就将一个实体类的行为放在分开的类中,此类专门提供某行为接口的实现,这样,实体类就不在需要知道行为的实现细节。 
   关键在多态,利用多态,程序可以针对超类型编程,执行时会根据实际状况执行到真正的行为,不会被绑死在超类型的行为上。 
   “针对超类型编程”这句话,可以更明确地说成“变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口,如此,只要是具体实现此超类型的类所产生的对象,都可以指定给这个变量。这也意味着,声明类时不用理会以后执行时的真正对象类型! 
3. 多用组合,少用继承 
4. 关于“鸭子类”的策略模式(Strategy Pattern)定义 
   策略模式,定义算法族、分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 
5. 使用模式和他人沟通时,其实“不只是”和他人共享“行话”而已 
   共享的模式词汇“威力强大”、模式能够让你用更少的词汇做更充分的沟通、将说话的方式保持在模式层次,可以让你待在“设计圈子”久一点、共享词汇可帮助开发团队快速充电和迅速成长。 
6. 抽象、继承、多态、封装等这些OO概念,并不会马上让你变成好的面向对象设计者,设计应当关心的是建立弹性的设计,可以维护,可以应付变化。 
   封装变化,多用组合,少用继承、针对接口编程,不针对实现编程。 
   模式不是具体的代码,而是针对设计问题的通用解决方案。你可把它们应用到特定的应用中。它不是被发明的,而是众人积累后发现的,其着眼与软件的变化。 
7. 观察者模式(Observer Pattern) 
   可以帮助你的对象知悉现况,不会错过该对象感兴趣的事,对象甚至在运行时可决定是否要继续被通知。我们也会一并介绍一对多关系,以及松耦合。、 
   利用观察者模式,主题是具有状态的对象,并且可以控制这些状态。也就是说,有“一个”具有状态的主题。另一方面,观察者使用这些状态,虽然这些状态并不属于他们,有许多的观察者,依赖主题来告诉他们状态何时改变了,这就产生一个关系,“一个”主题对“多个”观察者的关系。 
   之间的依赖关系是,因为主题是真正拥有数据的人,观察者是主题的依赖者,在数据变化时更新,这样比起让许多对象控制同一份数据来,可以得到更干净的OO设计。 
8. 松耦合的威力 
   关于观察者的一切,主题只知道观察者实现了某个接口(也就是Observer接口),主题不需要知道观察者的具体类是谁、做了些什么或者其他任何细节。 
   任何时候,我们都可以增加新的观察者,因为主题唯一依赖的东西是一个实现Observer接口的对象列表,所以我们可以随时增加观察者,事实上,在运行时我们可以用新的观察者取代现有的观察者,主题不会受到任何影响。同样的,也可以在任何时候删除某些观察者。 
   有新类型的观察者出现时,主题的代码不需要修改。假如我们有个新的具体类需要当观察者,我们不需要为了兼容新类型而修改主题的代码,所有要做的就是在新的类里实现此观察者接口,然后注册为观察者即可。主题不在乎别的,主题不在乎别的,它只会发送通知给所有实现了观察者接口的对象。 
   我们可以独立地服用主题或观察者,如果我们在其他地方需要使用主题或观察者,可以轻易地复用,因为二者并非紧耦合。 
   为交互对象之间的松耦合设计而努力。 
 
                    
                
                
            
        
浙公网安备 33010602011771号