设计模式

架构方法论

领域建模

  • 领域实体,领域服务
  • 可视化,可配置化

SOA

  • Service-Oriented Architecture 面向服务架构
  • 服务是松耦合(自包含的),黑盒子,自定义。中央存储库

分层架构

层次 模块名 接口后缀 对象后缀
接入层 integration Client
对外接口层 service facade Facade Request
表现层 web-home Controller VO(View Object)
应用层 biz Manager BO(biz Object)
领域层 core-service Service
持久层 dal Repository PO(Persistant Object)

设计模式

7大设计原则

  • 单一职责原则
  • 里氏替换原则:继承与派生的规则,尽量不要重写父类的方法
  • 依赖倒置原则:针对接口编程
  • 接口隔离原则:接口不要太臃肿
  • 迪米特法则:低耦合,高内聚
  • 开闭原则:对扩展开放,对修改关闭
  • 组合/聚合复用原则:多用组合/聚合,少用继承

创建型模式

  • 抽象工厂模式abstract factory:
  • 工厂模式factory:
  • 原型模式prototype:
  • 单例模式singleton:
  • 多例模式multition:
  • 生成器模式builder:

结构型模式

  • 适配器模式adapter:
  • 桥接模式bridge:
  • 组合模式composite:
  • 外观模式facade:
  • 享元模式flyweight:
  • 装饰器模式decorator:
  • 代理模式proxy:

行为型模式

  • 责任链模式chain of responsibility:使多个对象都有机会处理请求。将对象连成一条链,并沿着这条链传递请求。
  • 命令模式command:将请求封装成对象,使请求发送者和请求接受者之间相互隔离
  • 备忘录模式memento:快照模式,数据备份机制。发起者Originator只关心备忘录的创建和恢复,备忘录存储在管理者Caretaker
  • 解释器模式interpreter:定义语言的文法,并且建立解释器来解释该语言中的句子
  • 观察者模式observer:
  • 访问者模式visitor:作用于一个对象结构ObjectStruct中各个元素Element的操作accept。在不改变元素类的前提下定义元素的新操作。数据结构稳定,但是操作可以自由演化。
  • 模版方法模式template:
  • 策略模式strategy:运行时改变一个类的行为或算法
  • 状态模式state:当对象的状态改变时,允许其改变行为。客户端调用Context。状态对象State既要处理当前状态,也要处理如何过渡到下一个状态。
  • 中介者模式mediator:
  • 迭代器模式iterator:

J2EE模式

  • MVC模式:
  • 前端控制器模式front controller:
  • 业务代表模式business delegate:
  • 组合实体模式composite entity:
  • 数据访问对象模式data access object:
  • 拦截过滤器模式intercepting filter:https://www.oracle.com/technetwork/java/interceptingfilter-142169.html
  • 服务定位器模式service locator:
  • 传输对象模式transfer object:

Command模式

定义

将请求封装成命令对象,实现请求调用者与请求接收者的解耦。
命令接口Command:execute, undo, redo
具体命令:实现命令接口
调用者Invoker:持有命令,并调用命令方法
接收者Receiver:接收命令并执行

调用者调用(call)Commnd,然后由Command去执行(execute)接受者,最后由接受者完成业务逻辑(action)

Command还可以提供undo,redo的功能:用一个辅助类(CommandManager)维护undo/redo command栈。初始化的时候undo command入栈,清空redo command栈。undo的时候,undo command出栈,放入redo command栈。redo的时候,redo command出栈,放入undo command栈。

适用场景

  1. 系统要求请求调用者与请求接收者解耦
  2. 系统要求请求排队,在不同的时间执行
  3. 系统要求支持命令的Undo与Redo
  4. 系统要求将命令组合,形成宏

谢谢阅读!

你可能感兴趣的:(设计模式)