【Effective Java】架构与设计模式

来源:互联网 发布:mac安装flash player 编辑:程序博客网 时间:2024/05/16 04:59
  • MVC
    MVC是一种架构,或者可以说成是一种设计模式,它就是使应用程序的输入,处理,输出分离,细分为Model,View,Controller.
    View(视图)
    视图就是负责和用户交互的界面,在视图层没有真正的处理发生,只有数据的输出。并且用户可操作。
    Model(模型)
    Model代表一些应用数据和业务逻辑,在MVC中Model最多的是处理任务,被模型返回的数据是中立的,也就是说数据格式和模型是无关的。
    Controller(控制器)
    Controller 接受用户的输入并调用模型和视图去完成用户需求。
  • MVC的优点
    分工明确。把数据库开发,业务逻辑开发,页面开发,三个分离。便于维护。
    松耦合。视图层和业务层分离,在其他模块变动的情况下,不互相影响结果。
    重用性。多个视图重用一个模型。
  • MVC的缺点
    MVC没有明确的标准或者说是明确的定义,往往需要花时间去思考怎么设计这个MVC架构,并且MVC架构并不适合中小型的项目,它的价值很难在中小型项目里体现。所以不要为了MVC而去MVC。
  • MVP
    MVP主要分为:Model,View,Presenter。可以注意到,Presenter取代了Controller,Presenter词面意思是一个主导者,而MVP的模块间的联系方式相较MVC也做了改变,Presenter扮演了一个重要角色,Presenter是中间的媒介,Model与View的联系必须要通过Presenter。
    Presenter,扮演的是中间人的身份。

  • 设计模式
    我们所熟知的有23种。5种创建型,7种结构型,11种行为型。

  • 创建型

  • 工厂方法
    定义一个创建对象的接口,让子类决定实例化哪个类。
  • 抽象工厂
    提供一个相关的或者相互依赖对象的接口,而无需指定它们具体的类。
  • 建造者
    将一个复杂对象的构建和它的表现分离,使得同样的构建过程可以创建不同的表示。
  • 原型
    用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
  • 单例
    保证一个类只有一个实例,并提供一个访问它的全局访问点。

  • 结构型

  • 适配器
    将一个类的接口转化为另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。
  • 桥接
    将抽象部分和它的实例部分分离,使得它们可以独立变化。
  • 组合
    将对象组合成树形结构,表示“整体-部分”的层次结构,组合使得用户对单个对象和组合对象的使用具有一致性。
  • 装饰
    动态的给一些对象添加一些额外的职责。
  • 外观
    为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这一接口使得这一子系统更加容易使用。
  • 享元
    利用共享的技术有效的支持大量细粒度的对象。
  • 代理
    为其他对象提供一种代理以控制对这个对象的访问。

  • 行为型

  • 解释器
    给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
  • 模块方法
    定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模块方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
  • 责任链
    使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
  • 命令
    将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
  • 迭代器
    提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。
  • 中介者
    用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
  • 备忘录
    在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
  • 观察者
    定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。
  • 状态
    允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
  • 策略
    定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
  • 访问者
    定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。


1 0
原创粉丝点击