教程地址:http://www.runoob.com/design-pattern/design-pattern-tutorial.html
教程书籍:《Android 设计模式解析与实战》
1. 单例模式
关键字:Singleton
使用目的:单例模式主要就是为了保证当前系统中只存在一个实例,供不同的地方调用。
使用情景:当一个对象的产生需要较多资源(如读取配置、产生其他依赖对象),且创建和销毁的性能又无法优化时。
使用实例:Universal-Image-Loader。
2. 原型模式
关键字:Cloneable、深拷贝&浅拷贝
使用目的:使用原型实例创建对象的种类,并通过复制这些原型创建新的对象。
使用场景:1. 类初始化需要非常多的资源,这些资源包括数据、硬件等资源,通过原型复制可以避免这些消耗 2. 通过new创建一个对象需要非常繁琐的数据准备或者权限访问,这时可以使用原型模式 3.一个对象需要给其他对象访问,且各个调用这可能修改其值的时候,可以通过原型模式复制多个对象供调用者使用,即保护性拷贝。
使用实例:Intent
3. 建造者模式
关键词:Builder
使用目的:将复杂对象的构建和表示分离。
使用场景:1. 需要相同方法不同执行顺序,产生的结果不同时。 2. 设计的产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用时。3. 当一个对象非常复杂,参数众多,且很多参数都有默认值的时候。
使用实例: AlertDialog、Universal-Image-Loader 的 ImageLoaderConfig 配置。
4. 工厂模式
关键字:Factory
使用目的:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行,解决接口选择的问题。
使用场景:我们明确地计划不同条件下创建不同实例时。
使用实例:厂商生产不同型号的产品、Java的类型集合框架(举例:List 与 ArrayList)
5. 抽象工厂模式
关键字:Super Factory (解释:超级工厂创建其他工厂,又称为其他工厂的工厂,在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。)
使用目的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
使用场景:主要解决接口选择的问题。
使用实例:不同厂商生产不同品牌不同型号的产品。
0. 总结
本文主要是为了整理阅读此方面的教程后,整理出来的一些自己的思路的记录。根据阅读的进度,不断完善此文。因为设计模式本事就是一种编程思想的合集,所以后续也希望能慢慢将学习到的思想逐步融入到工作的编码中,写出来更有可读性且易扩展的代码。