zoukankan      html  css  js  c++  java
  • Android之设计模式

    设计模式的概念

    1.基本定义:设计模式(Design pattern)是一套被反复使用的代码设计经验的总结。使用设计模式的目的是为了可重用代码、让代码更容易被他人理解。设计模式是是软件工程的基石脉络,如大厦的结构一样。

    2.Design pattern的四大要素:模式名称(Name),问题(Question),解决方案(Solution),效果(Efftive)。

    3.OO(面向对象)的六大原则:单一职责原则,开闭原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特原则。

    设计模式的分类

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

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

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

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

    一、创建型模式

    • 抽象工厂模式: 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类.
    • 建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 .
    • 工厂模式: 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子类.
    • 原型模式: 当创建给定类的实例过程很昂贵或很复杂时, 就使用原形模式.
    • 单例模式: 确保一个类只有一个实例, 并提供全局访问点.


    二、结构型模式

    • 适配器模式: 将一个类的接口, 转换成客户期望的另一个接口. 适配器让原本接口不兼容的类可以合作无间. 对象适配器使用组合, 类适配器使用多重继承.
    • 桥接模式: 使用桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变.
    • 组合模式: 允许你将对象组合成树形结构来表现"整体/部分"层次结构. 组合能让客户以一致的方式处理个别对象以及对象组合.
    • 装饰者模式: 动态地将责任附加到对象上, 若要扩展功能, 装饰者提供了比继承更有弹性的替代方案.
    • 外观模式: 提供了一个统一的接口, 用来访问子系统中的一群接口. 外观定义了一个高层接口, 让子系统更容易使用.
    • 亨元模式: 如想让某个类的一个实例能用来提供许多"虚拟实例", 就使用蝇量模式.
    • 代理模式: 为另一个对象提供一个替身或占位符以控制对这个对象的访问.


    三、行为型模式

    • 责任链模式: 通过责任链模式, 你可以为某个请求创建一个对象链. 每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象.
    • 命令模式: 将"请求"封闭成对象, 以便使用不同的请求,队列或者日志来参数化其他对象. 命令模式也支持可撤销的操作.
    • 解释器模式: 使用解释器模式为语言创建解释器.
    • 迭代器模式: 提供一种方法顺序访问一个聚合对象中的各个元素, 而又不暴露其内部的表示.
    • 中介者模式: 使用中介者模式来集中相关对象之间复杂的沟通和控制方式.
    • 备忘录模式: 当你需要让对象返回之前的状态时(例如, 你的用户请求"撤销"), 你使用备忘录模式.
    • 观察者模式: 在对象之间定义一对多的依赖, 这样一来, 当一个对象改变状态, 依赖它的对象都会收到通知, 并自动更新.
    • 状态模式: 允许对象在内部状态改变时改变它的行为, 对象看起来好象改了它的类.
    • 策略模式: 定义了算法族, 分别封闭起来, 让它们之间可以互相替换, 此模式让算法的变化独立于使用算法的客户.
    • 模板方法模式: 在一个方法中定义一个算法的骨架, 而将一些步骤延迟到子类中. 模板方法使得子类可以在不改变算法结构的情况下, 重新定义算法中的某些步骤.
    • 访问者模式: 当你想要为一个对象的组合增加新的能力, 且封装并不重要时, 就使用访问者模式.

    六大设计原则

         单一职责原则:一个类中应该是一组相关性很高的函数,数据的封装。两个完全不一样的功能就不应该放在一个类中。

         开闭原则:对修改封闭,对扩展放开。

         里氏替换原则:抽象和继承;所有引用基类的地方必须能透明的使用其子类的对象。

         依赖倒置原则:抽象不应该依赖细节,细节应该依赖抽象。

         接口隔离原则:将大接口改成多个小接口。

         迪米特原则:也称为最少知识原则,一个对象应该对另一个对象有最少的了解。

  • 相关阅读:
    Direct UI 思想阐述(好多相关文章)
    GetSystemTimeAsFileTime讲解(从1601年1月1日到目前经过的纳秒)
    WPF的消息机制
    CEdit 样式与消息 解析
    vcredist_x86.exe 静默安装方法
    iOS 开发问题集锦(一)
    EM算法详解
    BCP导入导出MsSql
    为什么不能在子类或外部发布C#事件
    HTML5 拖放及排序的简单实现
  • 原文地址:https://www.cnblogs.com/zhangqie/p/6407633.html
Copyright © 2011-2022 走看看