Android设计模式

设计模式最早由Gang of Four四人小组归纳了23种在软件开发中使用频率较高的设计模式,并在1995年整理汇编成《Design Patterns:Elements of Reusable Object-Oriented Software》

一、设计模式的分类

总体来说设计模式分为三大类:

创建型模式,共五种:单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:职责链模式、命令模式、解释器模式、策略模式、模板方法模式、观察者模式、迭代器模式、备忘录模式、状态模式、访问者模式、中介者模式。

其中使用频率由高到低依次是

  1. 工厂方法模式、抽象工厂模式、外观模式、观察者模式、迭代器模式、
  2. 单例模式、适配器模式、组合模式、代理模式、命令模式、策略模式、
  3. (简单工厂模式)、桥接模式、装饰模式、状态模式、模板方法模式、原型模式
  4. 建造者模式、职责链模式、中介者模式、备忘录模式、
  5. 享元模式、解释器模式、访问者模式、

二、设计模式的七种常见原则

按照使用频率排序如下:
1、开闭原则(Open-Close Principle)
开闭原则就是说对扩展开放,对修改关闭。

2、里氏代换原则(Liskov Substitution Principle)
任何基类可以出现的地方,子类一定可以出现。

3、依赖倒转原则(Dependence Inversion Principle)
抽象不应该依赖于细节,细节应该依赖于抽象。

4、合成复用原则(Composite Reuse Principle)
尽量使用对象组合,而不是使用继承来达到复用的目的。

5、单一职责原则(Single Responsibility Principle)
一个类只负责一个功能领域中的相应职责。

6、迪米特法则(最少知道原则)(Demeter Principle)
一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

7、接口隔离原则(Interface Segregation Principle)
使用多个专门的接口,而不是用单一的总接口。

三、原则详解

  • 单一职责原则
    -单一职责的核心思想是:一个类不能太“累”,一个类所承担的功能越多,就越不可能被复用。而且一个类承担的功能过多,当其中一个功能改动时,可能会影响到其他的功能。
    单一职责是实现高内聚,低耦合的指导方针。
public class CustomerDataChart{
    public void getConnection(){}//连接数据库
    public void findCustomers(){}//查询客户信息
    public void showChart(){}//显示图表
}

上面这个CustomerDataChart类明显就是承担职责过多。如果在其他类中也需要连接数据库或显示图表,代码不能复用。当CustomerDataChart有很多的时候,比如还有其他的UserDataChart,如果需要修改连接数据库的方式或是显示图表的方式,则会有大量的重复工作。所以需要对该类进行拆分。

  • 开闭原则
    -一个软件实体应该对扩展开放,对修改关闭。软件实体可以指一个软件模块,一个或多个类组成的结构。 如果一个软件符合开闭原则,那么可以非常方便的对系统进行扩展,而无需修改现有代码。
    抽象化是开闭原则的关键,定义系统的抽象层,再通过具体类来进行扩展。如果需要修改系统的行为,只需要增加新的具体类来实现新的业务。
  • 里氏代换原则
    -所有引用父类的地方都可以替换成引用子类,程序不会有任何异常。
    在程序中使用父类类型来定义对象,在运行时在确定子类,这样可以很方便的扩展系统功能,只需新增子类就可以了。
  • 依赖倒转原则
    -抽象不应该依赖于细节,细节应该依赖于抽象。即,针对接口编程,而不是针对实现编程。

  • 合成复用原则

  • 迪米特法则
  • 接口隔离原则
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值