8种常用的android设计模式

一般来说,常用的android设计模式有以下8种:单例、工厂、观察者、代理、命令、适配器、合成、访问者。

 

  单例模式:目的是为了让系统中只有一个调用对象,缺点是单例使其他程序过分依赖它,而且不同单例运行在不同进程中,使得维护困难;

 

  工厂模式:生产固定的一些东西,如抽象类,缺点是产品修改麻烦;如喜欢动作片和爱情片的人分别向服务器发出同一个请求,就可以得到他们想看的影片集,相当于不同对象进行同一请求,需求均得到满足。

      AOSP中使用到工厂模式的地方:

 
  1. Java中的工厂方法:

  2. java.net.DatagramSocketImplFactory

  3. java.net.SocketImplFactory

  4. java.net.URLStreamHandlerFactory

  5. java.security.cert.CertificateFactory

  6. java.util.prefs.PreferencesFactory

  7. javax.xml.parsers.SAXParserFactory

  8. SSLSocketFactory

  9. LogFactory

  10. AuthSchemeFactory

  11. SocketFactory

  12. MultihomePlainSocketFactory

  13. LayeredSocketFactory

  14. PlainSocketFactory

  15. CookieSpecFactory

  16. HttpRequestFactory

  17. HttpResponseFactory

  18. ClientConnectionManagerFactory

  19. XMLStringFactory

  20. lookUpFactoryClass

  21. DocumentBuilderFactory

  22. IntentFactory

  23. SQLiteDatabase.CursorFactory

  24. RemoteViewsFactory

  25. EffectFactory

  26. CodecFactory

  27. EGLContextFactory

  28. SAXParserFactory

  29. Spannable.Factory

  30. MockEditableFactory

  31. TransformerFactory

  32. IApiLoader

  33. TypePool

  34. ITypeFactory

  35. org.xmlpull.v1.XmlPullParserFactory

  36. ContextFactory

  37. LayoutInflater

  38. CardViewFragment

  39. NFAFactory

  40. ExecutorFactory

  41.  
  42. C/C++中的工厂方法:

  43.  
  44. AudioSignalFactory

  45. GenericFactory

  46. EmulatedCameraFactory

  47. ANTLR3_TOKEN_FACTORY

  48. JniDependencyFactory

  49. WeakPtrFactory

  50. scheme_classifier_factory

  51. content_activity_factory

  52. activity_factory

  53. pref_service_factory

  54. MessagePumpFactory

  55. surface_factory

  56. LayerTreeHostFactory

  57. SurfaceFactory

  58. DriveIntegrationServiceFactory

  59. ServiceFactory

  60. devtools_network_transaction_factory

  61. MockDistillerFactory

  62. MockDistillerPageFactory

  63. BrowserContextKeyedAPIFactory

  64. PickerFactory

  65. URLFetcherImplFactory

  66. BrowserContextKeyedAPIFactory

  67. chrome/browser/extensions/api/dial/dial_api_factory.h

  68. chrome/browser/extensions/api/idle/idle_manager_factory.h

  69. chrome/browser/extensions/api/networking_private/networking_private_event_router_factory.h

  70. chrome/browser/extensions/extension_garbage_collector_factory.h

  71. chrome/browser/extensions/extension_storage_monitor_factory.h

  72. chrome/browser/extensions/extension_system_factory.h

  73. chrome/browser/extensions/extension_toolbar_model_factory.h

  74. chrome/browser/extensions/install_tracker_factory.h

  75. chrome/browser/extensions/menu_manager_factory.h

  76. chrome/browser/extensions/token_cache/token_cache_service_factory.h

  77. chrome/browser/chromeos/extensions/file_manager/event_router_factory.h

  78. chrome/browser/signin/chrome_signin_client_factory.h

  79. chrome/browser/signin/chrome_signin_client_factory.h

  80. chrome/browser/signin/signin_manager_factory.h

  81. chrome/browser/invalidation/profile_invalidation_provider_factory.h

  82. chrome/browser/services/gcm/gcm_profile_service_factory.h

  83. chrome/browser/net/proxy_service_factory.h

  84. chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_factory.h

  85. content/public/browser/cookie_store_factory.h

  86. net/http/http_auth_handler_factory.h

  87. net/url_request/url_request_job_factory_impl.h

  88. PrivetHTTPAsynchronousFactory

  89. chrome/browser/search/hotword_service_factory.h

  90. chrome/browser/search_engines/template_url_service_factory.h

  91. chrome/browser/search_engines/template_url_fetcher_factory.h

  92. components/gcm_driver/gcm_client_factory.h

  93. chrome/browser/supervised_user/supervised_user_service_factory.h

  94. chrome/browser/signin/profile_oauth2_token_service_factory.h

  95. chrome/browser/supervised_user/custodian_profile_downloader_service_factory.h

  96. chrome/browser/supervised_user/supervised_user_pref_mapping_service_factory.h

  97. chrome/browser/supervised_user/supervised_user_settings_service_factory.h

  98. chrome/browser/supervised_user/supervised_user_shared_settings_service_factory.h

  99. chrome/browser/supervised_user/supervised_user_sync_service_factory.h

  100. chrome/browser/sync/profile_sync_service_factory.h

  101. chrome/browser/themes/theme_service_factory.h

  102. chrome/browser/bookmarks/bookmark_model_factory.h

  103. chrome/browser/dom_distiller/dom_distiller_service_factory.h

  104. chrome/browser/history/history_service_factory.h

  105. chrome/browser/notifications/sync_notifier/chrome_notifier_service_factory.h

  106. chrome/browser/password_manager/password_store_factory.h

  107. chrome/browser/search_engines/template_url_service_factory.h

  108. chrome/browser/signin/signin_manager_factory.h

  109. chrome/browser/sync/profile_sync_components_factory_impl.h

  110. chrome/browser/webdata/web_data_service_factory.h

  111. chrome/browser/ui/app_list/app_list_syncable_service_factory.h

  112. chrome/browser/spellchecker/spellcheck_factory.h

  113. content/common/gpu/gpu_memory_buffer_factory.h

  114. content/renderer/android/synchronous_compositor_factory.cc

  115. mojo/services/public/cpp/view_manager/view_manager_client_factory.h

                   太多了,比想办法罗列完,有一个更急迫的问题:如何消灭程序员?

 

  观察者模式:就是多个对象对一个对象进行监控,如缓存;

 

  代理模式:自己的事交给别人去做,分别返回结果即可,如异步线程;

 

  命令模式:调用对象与作用对象之间分离,由中间件来协调两者之间的工作,如控制器;

 

  适配器模式:将一个接口变成用户所需要的接口,如baseadapter可以适配listview和spinner,因为它们有相同的接口

 

  合成模式:将一对多的关系转换成一对整体的关系,如listview与适配器;

 

      建造者模式:AlertDialog.Builder

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值