有时候,最难的是坚持;有时候缺少的是信念。
看了很多年的设计模式,也看了很多种设计模式,也在工作中用了几个常见的设计模式。
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.晦涩性
... ...
总而言之,一句话,面向对象特性+原则+模式,折腾来折腾去就是这么个回事。
本文转自:谦虚的天下
相关推荐
"1、开篇.avi"很可能是介绍整个系列的开篇,讲解了为什么需要这两种设计模式以及它们在Android开发中的重要性。 学习和熟练运用MVC和MVP设计模式对于提升Android开发能力至关重要,它们能帮助开发者写出更清晰、更...
这样的模式促进了全球工程师的协作,避免了资源浪费,也推动了像Android这样的开源项目成为行业巨头,改变了整个智能设备市场。 在课程实施过程中,教师将思政教育融入专业课程讲解,让学生理解如何在实际中实践...
本文将从“iOS应用架构谈 开篇 - Casa Taloyum1”出发,探讨iOS应用程序的常见架构模式以及如何构建高效、可复用的代码结构。 首先,iOS应用的视图层(View Layer)是用户界面的直接呈现部分,包括UIControls、...
根据给定的文件信息,以下是对“Android笔记”的知识点整理与详细解释: ### Android学习笔记概览 #### 一、基础概念 1. **开篇介绍:** - 开始学习Android开发之前的基础介绍。 2. **框架简介:** - 对Android...
**Android核心分析(01):** 开篇从设计意图入手,强调了研究Android的目的不仅在于掌握其技术细节,更重要的是理解其背后的逻辑与设计理念。这为后续的技术解析奠定了理论基础。 #### 二、方法论探讨 **Android...
- P2P通信是一种新兴的通信模式,本章将介绍如何利用Android提供的API实现设备间的直接通信,适用于诸如即时消息应用、文件共享等场景。 11. **第10章:访问Android硬件** - 本章将探讨如何访问和控制Android设备...
本章作为全书的开篇,为读者介绍了Android编程的基础知识。内容包括但不限于: - **Android平台概述**:介绍Android操作系统的历史、版本发展以及市场占有率。 - **开发环境搭建**:指导读者如何安装必要的开发工具...
此外,Android为设备提供了单用户模式,并通过分配唯一标识来适应多用户设备服务的需求。 最后,文章讨论了Android系统中进程间的通信机制,包括intent和code绑定两种模型。Intent类框架提供了高层进程间通信机制,...
在Android高级开发实践中,我们面临着一系列挑战,包括性能优化、代码结构优化以及新技术的应用。本课程涵盖的关键知识点如下: 1. **内存优化**:在Android应用中,内存管理是提高性能和用户体验的重要方面。课程...
本视频为系列教程的开篇之作,旨在帮助初学者快速了解Android平台的基础概念与特点。Android是一种基于Linux内核的操作系统,主要应用于移动设备如智能手机和平板电脑。它由Google公司维护,并且是开源软件。通过...
博客文章"自定义控件其实很简单1/12"是作者aigestudio在CSDN上分享的一系列教程的开篇,旨在帮助开发者轻松掌握这一技能。 自定义View的核心在于继承Android系统提供的基础View类或ViewGroup类,如View、TextView、...
在软件方面,结合安卓平台开发技术设计了手机客户端,实现了对LED灯的远程控制开关、定时开关、亮度调节、灯光模式转换及状态监控的功能。 此外,为了提高系统的稳定性和安全性,系统采用AMS1117模块进行3.3V电源...
抽象类用于定义一种通用的基类,提供公共接口而不包含具体实现,而静态接口则允许开发者在不创建对象的情况下调用方法,这对于设计模式和多态性有重要应用。 第9章 "创建定制组件" 和第10章 "高级组件设计" 是...