看了很多年的设计模式,也看了很多种设计模式,也在工作中用了几个常见的设计模式。android中,包括源码和一些开源项目,用到了很多经典设计模式,而且也用的非常的精彩。学习android也有一些日子了,有空的时候看看源代码,看看开源项目的代码,自己也会再工作中写写代码。
     今天,斗胆,基于android(其实就是java),把自己对设计模式的一些粗浅认识,默默的分享出来,希望能得到各位同仁的指点,以期设计能力更进一步。我将以《设计模式:可复用面向对象软件的基础》为准,发掘android中各种设计模式的使用情况,提取核心部分,做为实例。
     因为不需要写代码,应用场景又一般是android中自带的,所以文中可能会注重意图介绍和UML结构图的绘制,然后具体设计模式的本身和扩展还需要各位参考其他资料。
 
下面我列举一些重要的认识点:
设计模式,提供了很多软件工程问题所需处理的解决方案。
根据模式的目的可分为3类:
 1.创建型模式:与对象的创建有关。
 2.结构性模式:处理类与对象的组合。
 3.行为性模式:对类或对象怎样交互和怎样 分配职责进行描述。  
 面向对象设计的2个基本原则:
 1.针对接口编程,而不是针对实现编程。
 2.优先使用对象组合,而不是类继承。 
 面向对象设计的5个设计原则:
 1.单一职责原则(SRP)
 2.开放封闭原则(OCP) 
 3.Liskov替换原则(LSP)
 4.依赖倒置原则(DIP)
 5.接口隔离原则(ISP) 
23种设计模式:
1.创建型模式:
 (1).工厂方法模式
 (2).抽象工厂模式
 (3).创建者模式
 (4).原型模式
 (5).单例模式
  
2.结构型模式:
 (6).适配器模式
 (7).桥模式
 (8).组合模式
 (9).装饰模式
 (10).外观模式
 (11).享元模式
 (12).代理模式
  
3.行为型模式
 (13).解释器模式
 (14).模板方法模式
 (15).职责链模式
 (16).命令模式
 (17).迭代器模式
 (18).中介者模式
 (19).备忘录模式
 (20).观察者模式
 (21).状态模式
 (22).策略模式
 (23).访问者模式   
除此之外,后来人发现很多新的模式,如空模式等。
下面列举几个常见的问题导致重新设计,可能需要设计模式来分析解决:
 1.通过显示的指定一个类来创建对象
 2.对特殊操作的依赖
 3.对硬件和软件平台的依赖
 4.对对象表示或实现的依赖
 5.算法依赖
 6.紧耦合
 7.通过生产子类来扩展功能
 8.不能方便的对类进行修改  
软件的设计臭味:
 1.僵化性
 2.脆弱性
 3.顽固性
 4.粘滞性
 5.不必要的复杂性
 6.不必要的重复
 7.晦涩性 
 … …
  
总而言之,一句话,面向对象特性+原则+模式,折腾来折腾去就是这么个回事。
——————————-
转自:http://www.cnblogs.com/qianxudetianxia/archive/2011/07/29/2121547.html
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91437 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!