设计模式专题

1.设计模式六大原则

a.单一职责原则:就一个类来说,应该只有一个引起它变化的原因

一个类做一件事情,避免职责过多。比如这种情况是不太好的,在一个Activity中既有bean文件,又有http请求,还有adapter等等,这就导致我们需要修改任何一个东西的时候都会导致Activity的改变,这样一来就有多个引起它变化的原因,不符合单一职责原则

b.开放封闭原则:类,模块,函数应该是可以扩展的,但是不可以修改

对于扩展是开放的,对于修改是封闭的。尽量做到面对需求的改变时,我们的代码能保持相对稳定,通过扩展的方式应对变化,而不是修改原有代码实现

c.里氏替换原则:所有引用基类的地方,必须可以透明的时候其子类的对象

里氏替换原则是实现开放封闭原则的重要方式之一,我们知道,使用基类的地方都可以使用子类去实现,因为子类拥有基类的所有方法,所以在程序设计中尽量使用基类类型对对象进行定义,在运行时确定子类类型。

d.依赖倒置原则:高层模块不应该依赖于底层模块,两者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象

依赖倒置原则针对的是模块之间的依赖关系,高层模块指调用端,底层模块指具体的实现类,抽象指接口或抽象类,细节就是实现类。该原则的具体表现就是模块间的依赖通过抽象发生,直线类之间不发生直接依赖关系,依赖通过接口或抽象类产生,降低耦合,比如MVP模式下,View层和P层通过接口产生依赖关系

e.迪米特原则(最少知识原则):一个软件实体应该尽可能少的与其他实体发生相互作用

迪米特原则要求我们在设计系统时,尽量减少对象之间的交互

f.接口隔离原则:一个类对另一个类的依赖应该建立在最小的接口上

接口隔离原则的关键是接口以及这个接口要小,如何小呢,也就是我们要为专门的类创建专门的接口,这个接口只对它有效,不要试图让一个接口包罗万象,要建立最小的依赖关系

2.设计模式的分类

创建型设计模式

与对象创建有关包括单例模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式

结构型设计模式

结构性设计模式是从程序的结构上解决模块之间的耦合问题,包括适配器模式,代理模式,装饰模式,外观模式,桥接模式,组合模式和享元模式

行为型设计模式

主要处理类或对象如何交互及如何分配职责,包括策略模式,模板方法模式,观察者模式,迭代器模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介模式,解析器模式

3.设计模式

创建型

单例模式:

        保证一个类仅有一个实例,并提供一个访问它的全局访问点
        包含:饿汉式、懒汉式、双重检验、静态内部类、枚举、容器实现。
        单例模式详解

结构型

 代理模式:

        为其他对象提供一种代理以控制这个对象的访问。
        代理模式详解

静态代理:
        在代码运行前就已经存在了代理类的class编译文件。
        代理类包含了真实主题类(被代理者),最终调用的都是真实主题类实现的方法

动态代理:
        
在代码运行时通过反射来动态的生成代理类的对象,并确定到底来代理谁。
        Java提供了动态的代理接口InvocationHandler,实现该接口需要重写invoke()方法

使用场景:无法或者不想直接访问某个对象时可以通过一个代理对象来间接的访问

装饰模式:

        不必改变类文件和不使用继承的情况下,动态地给一个对象添加一些额外的职责,是继承的替代方案之一。它是通过创建一个包装对象,也就是装饰来包裹真实的对象
装饰模式详解

Android中的使用:编译时注解

代理模式和装饰模式的区别:    

    装饰模式对引用的对象增加了功能,而代理模式只是对引用对象进行了控制却没有对引用对象本身增加功能

外观模式:

        为系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得子系统更加容易使用。隐藏内部细节,提供统一接口对外使用        
外观模式详解

Android中的使用:Context

享元模式:

        减少应用程序创建的对象,降低程序内存的占用,提高程序的性能。
        享元模式详解

行为型

观察者模式:

        定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己
观察者模式详解

Android中的使用:

  • JDK中的java.util.Observable和java.util.Observer类;
  • 控件的点击事件

模板方法模式:

       使用继承,父类对通用流程进行封装,子类实现具体功能。模板模式详解

Android中的使用:

  • Activity的生命周期
  • AsyncTask

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>