一般的,在开发的时候,写过的代码在需求变更后,发现需要改动非常多的地方,那么说明之前的代码的架构肯定是存在问题的。

下面我们结合面向对象的六大基本原则谈Android 框架式编程。首先先介绍一下面向对象的的六大基本原则:

1. 单一职责原则

单一职责原则的定义为:就一个类而言,应该仅有引起它变化的原因。简单来说,一个类应该是一组相关性很高的函数、数据的封装。

2. 开闭原则

开闭原则的定义为:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是,对于修改是封闭(关闭)的。
当软件需要变化时,应该尽量通过扩展的方式来实现变化,而不是通过修改已有的代码来实现。

3. 里氏替换原则

里氏替换原则的定义为:只要父类能出现的地方子类就可以出现,主要体现就是实现和继承

4. 依赖倒置原则

依赖倒置的定义为:指代了一种特定的解耦形式,高层模块不依赖低层次模块的细节,说白了高层次就是不依赖细节而是依赖抽象。

5. 接口隔离原则

接口隔离原则的定义为:类间的依赖关系应该建立在最小的接口上。接口隔离原则将非常庞大、臃肿的接口拆分成为更小的和更具体的接口,这样客户将会只需要知道他们感兴趣的方法。接口隔离原则的目的是系统解开耦合,从而容易重构、更改和重新部署,让客户端依赖的接口尽可能地小。(接口拆分,单接口)
 
上面的这个五个原则  其实都更接口和抽象有关 (面向抽象和面向接口)

6. 迪米特原则

迪特米原则的定义为:一个对象应该对其他对象有最少的了解,调用者也是比较关注。
 
 

推荐文章

BufferKnife  使用方法: Android框架式编程之BufferKnife

MVP  使用方法:Android MVP 架构说明Android 架构艺术之MVP

Android 框架式编程 —— 起篇的更多相关文章

  1. Android框架式编程之架构方案

    目前移动端应用市场已经是百花齐放,很多独角兽公司都是通过App创业发展起来的,现在App类型更加丰富,功能越来越完善,基本上涵盖了各个行业的每个角落.为了开发出更加有竞争力的App,不仅需要功能上有创 ...

  2. Android框架式编程之BufferKnife

    配置 compile 'com.jakewharton:butterknife:(insert latest version)' annotationProcessor 'com.jakewharto ...

  3. Android框架式编程之Android Architecture Components

    1. 当前Android开发面临的问题 Android开发不同于传统的桌面程序开发,桌面程序一般都有唯一的快捷方式入口,并且常作为单进程存在:而一个典型的Android应用通常由多个应用组件构成,包括 ...

  4. Android框架式编程之RxJava(一):HelloWorld

    Hello World 源码: import android.graphics.Bitmap; import android.graphics.BitmapFactory; import androi ...

  5. Android框架式编程之Room

    Room是Google官方出品的ORM(Object-relational mapping) 框架.当前我们也知道当前还有很多的ORM框架,例如GreenDao.OrmLite.Litepal等.目前 ...

  6. Android框架式编程之Retrofit

    一.Retrofit 简介 Retrofit 官网地址: https://github.com/square/retrofit Retrofit(即Retrofit,目前最新版本为2.6.0版本),是 ...

  7. Android框架式编程之Lifecycle

    Lifecycle官方文档地址:https://developer.android.com/topic/libraries/architecture/lifecycle. 一.为什么要使用Lifecy ...

  8. Android框架式编程之EasyPermissions

    EasyPermission库是一个谷歌官方提供的简化基本的系统权限逻辑的库,可用于在Android M或者更高版本上. 官方项目地址:https://github.com/googlesamples ...

  9. Android框架式编程之LiveData

    一.LiveData 介绍 LiveData是 Google 推荐的 Android 架构组件之一,是一个基于观察者模式的数据容器,但与一般的被观察者不同的是,它是有生命周期感知功能,解决了Andro ...

随机推荐

  1. Delphi TXLSReadWriteII导出Excel

    TXLSReadWriteII导出Excle (有点复杂,可以自己简化一下,直接从项目中抓取的) procedure TformSubReport.DataToExcel(_Item: Integer ...

  2. as3:sprite作为容器使用时,最好不要指定width,height

    除 TextField 和 Video 对象以外,没有内容的显示对象(如一个空的 Sprite)的高度为 0,即使您尝试将 height 设置为其它值,也是这样. 如果您设置了 height 属性,则 ...

  3. nginx命令启动及选项

    [root@ke]# nginx -h  #this help [root@ke]# nginx -t  #检查配置文件的语法 [root@ke]# nginx -T  #检查配置文件的语法并输出 [ ...

  4. as3.0 当fla里面有TLF文本的时候,加载声音会出现错误

    问题描述 1.现有制作好的mp3加载包,这个包是相对路径 2.如果fla里面没有TLF文本,可以正常运行 解题思路 1.音频的相对路径和加载TLF文本的路径不一样,fla会优先选择TLF文件,这样mp ...

  5. Mac 安装、卸载JDK 1.6

    卸载 输入 sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin sudo rm -fr /Library/Preferenc ...

  6. Solidity合约间的调用 -Solidity通过合约转ERC20代币

    Solidity通过合约转ERC20代币   ERC20代币并不能像Ether一样使用sendTo.transfer(amt)来转账,ERC20代币只能通过token中定义的transfer方法来转账 ...

  7. Xadmin添加,编辑,删除

    Xadmin添加,编辑,删除 1.HTML 编辑和添加页面得内容相同,使用include将他们整合 {% include xxx.html %} 获取指定页面的所有内容 1.单独建个html存放编辑和 ...

  8. c#mysql批量更新的两种方法

    总体而言update 更新上传速度还是慢. 1:  简单的insert  速度稍稍比MySqlDataAdapter慢一点 配合dapper 配置文件 <?xml version="1 ...

  9. redis持久化详述

    本来打算根据自己搜索的一些文章写些总结,后来发现了一篇好文,这里转载下,在自己博客里面记录下. 原文链接:https://www.cnblogs.com/kismetv/p/9137897.html ...

  10. Sort Array By Parity II LT922

    Given an array A of non-negative integers, half of the integers in A are odd, and half of the intege ...