系统架构设计模式大全

  目前系统架构大约有110多种设计模式,模式不是教条,模式仅仅是经验的总结,下面小编为大家整理了一些系统架构设计模式,一起来看看吧:

  Domain Model:定义了一个应用领域结构和工作流的精确模型,其中还包括它们的变化。

  Layers:解决系统合理分层的问题。

  Model-View-Controller:解决对用户界面变化的支持问题。支持某一特定用户界面的变化。

  Presentation-Abstraction-Control:解决相同业务具有多种表现形式问题。

  Microkernel:解决业务具有多种不同业务方法的问题。

  Refelection:解决需要动态改变软件系统结构和行为的问题。

  Pipes and Filters:解决算法的结构化并可以重新构建的问题。

  Shared Repository:适用于网络管理和控制系统领域。

  Blackboard:解决运行中智能化改进处理方法的问题。

  Domain Object:表现为已经将自我完备的连贯功能和基础性责任封装成定义良好的实体,通过一个或多个”显示接口”提供功能,并隐藏内部结构和实现。

  Messaging:由一系列相互连接的MessageChannel和Message Router管理着跨网络的不同服务间的消息交换。

  Message Channel:解决如何把彼此协作的客户端和服务连接起来的问题。

  Message Router:解决如何根据条件接受”信道”消息的问题。

  Message Translator:解决如何转换消息格式的问题。

  Message Endpoint:解决把数据转换为消息中间件能够理解的形式的问题。

  Publisher-Subscriber:为了在应用中更好的把彼此关注的事件通知给其它领域对象。

  Broker:通过一个代理管理器管理领域对象间远程互操作的各个关键方面。

  Client Proxy:解决客户端应用与网络基础设施相互屏蔽的问题。

  Requestor:解决应用代码被基础设施的代码污染而影响可移植性的问题。

  Invoker:解决服务代码被基础设施的代码污染而影响可移植性的问题。

  Client Request Handler:解决客户端应用与通信相互影响的问题,它封装了客户端在统一的接口背后进行的进程间通信的细节。

  Server Request Handler:解决服务端应用与通信相互影响的问题,封装了服务器端在统一的接口背后进行的进程间通信的细节。

  Reactor:解决在应用中避免使用多线程的问题。

  Proactor:解决在多线程的背景下出现性能问题的缺陷。

  Acceptor-Connector:把事件初始化与具体处理方法分离,从而提高可维护性。

  Asynchronous Completion Token:解决异步到达的事件仍然能按一定顺序处理的问题。

  Explicit Interface:解决如何正确设计接口的问题。

  Extension Interface:随着时间的推移,组件的接口是会膨胀的,一个胖的接口将更脆弱。解决防止”胖”接口并分离接口。

  Introspective Interface:解决公开内部信息接口的问题。

  Dynamic Invocation Interface:解决同一个接口允许客户端调用多种方法的问题。

  Proxy:解决在同一个接口下通过代理屏蔽某些实现的问题。

  Business Delegate:由本地业务代表来完成所有网络任务,分离了应用和网络处理的业务,减少了开发难度、提高了可理解性和可维护性。

  Facade:解决屏蔽子系统的变化辐射到高层应用的问题。

  Combined Method:解决多种相互关联的方法不合理的分布的问题。

  Iterator:解决分布式元素能够方便迭代的问题。

  Enumeration Method:解决减少外部迭代方式多次对聚合中的元素进行独立访问开销的问题。

  Batch Method:解决多次访问加大网络开销的问题。

  Encapsulated Implementation:解决对象划分的基本原则和方法问题。

  Composite:建立一种结构灵活的树状结构对象组织形式,形成“整体/部分”层级结构。

  Half-Object plus Protocol:通过在分布式系统中合理布局对象,以减少不合理的网络流量和服务器压力。

  Replicated Component Group:解决分布式系统容错的问题,复制的组件实现位于不同的网络节点,并组成一个组件组。

  Half-Sync/Half-Async:对并发系统中的异步和同步服务处理解耦合以简化编程,但又不会过度地影响性能。

  Leader/Followers:解决大批量小处理的环境下减少并发线程应用的问题。

  Active Object:为了减少服务器并发线程应用。

  Monitor Object:解决并发业务相互协调的问题。

  Guarded Suspension:在并发性程序中,当某个线程对一个资源进行访问的时候,首先需要判断这个资源的警戒条件是否成立。

  Future:并发调用的服务可能需要向客户端返回结果。

  Thread-Safe Interface:避免自死锁和加锁开销。

  Strategized Locking:在创建或声明时,为组件配置适当类型的锁实例。使用该锁实例来保护组件中的所有临界区。

  Scoped Locking:解决复杂繁琐代码中的疏忽发生漏释放造成死锁的问题。

  Thread-Specific Storage:解决频繁使用对象造成反复加锁解锁造成的性能问题。

  Copied Value:解决共享的值对象必须锁定带来的性能问题。

  Immutable Value:解决共享的值对象必须锁定带来的性能问题。

  Observer:定义一个特定的更新接口,通过该接口,Observer获得Subject状态变更的通知。

  Double Dispatch:根据运行时多个对象的类型确定方法调用的过程。

  Mediator:封装集合中所有对象的聚合协作行为,从而将这些对象解耦合。

  Command:为这些对象定义一个通用接口,来执行它们所代表的请求。

  Memento:解决在不破坏封装性的前提下正确存储和读取分布式对象状态的问题。

  Context Object:解决在松耦合系统中共享与程序执行上下文相关的通用信息的问题。

  Data Transfer Object:解决细粒度调用多次访问远程对象单个属性所带来的巨大开销问题。

  Message:解决网络协议只支持比特流这种最简单的数据传输形式,并不能识别服务调用和数据类型的问题。

  Bridge:解决在下层稳定的业务中嵌入上次变化部分的问题。

  Object Adapter:解决接口变化导致的不兼容问题。

  Chain of Responsibility:解决对象结构和请求分发逻辑上的变化影响到客户端的问题。

  Interceptor:解决构建一个可插拔的框架变化模型的问题。

  Visitor:解决将服务的实现分散在定义对象结构的各个类中难以进行集中处理的问题。

  Decorator:解决在稳定的核心功能外围添加扩展的问题。

  Template Method:解决在下层稳定的业务中嵌入上次变化部分的问题。

  Strategy:解决在一个或多个方法中根据不同的情况执行不同行为的问题。

  Wrapper Facade:主要解决应用代码使用底层API所提供的服务但代码难以理解的问题,需要对底层API进行面向对象的封装,通过提供一个简洁的'、健壮的、可移植的、内聚的面向对象的接口,来达到封装函数和数据的目的。

  Declarative Component Configuration:建立需要安装各类插件的宿主基础设施,使其能够正确管理运行时环境,可靠运用系统资源和服务的问题。

  Container:解决领域对象直接处理平台环境造成它与平台紧密耦合并增加实现的复杂性的问题。

  Component Configurator:解决在组件生命周期后期和升级时重新配置组件的问题。

  Object Manager:解决客户端依赖对象管理增加应用内部的耦合度和复杂度的问题。

  Virtual Proxy:解决从一个巨大数据库中把所有的对象全部加载进来消耗大量资源的问题。

  Resource Pool:解决获取和释放资源(网络连接、线程或者内容)引入一定的性能开销问题。

  Resource Cache:解决几个有限的资源用户频繁创建和释放资源带来不必要的性能开销问题。

  Automated Garbage Collection:解决不能及时将不再使用的内存收回可能耗尽内存的问题。

  Counting Handles:解决确保在堆上创建的共享对象能够可靠地、安全地、及时地回收的问题。

  Abstract Factory:解决一批对象用统一的方法进行创建和销毁的问题。

  Builder:解决对需要多步完成对象的创建时,简化创建过程的复杂性和多样性问题。

  Factory Method:解决直接创建对象可能导致代码的混乱并影响调用端代码的独立性问题。

  Disposal Method:解决销毁对象时可能需要多个步骤而引人过度的耦合问题。

  Database Access Layer:它通过在两种之间引人一个映射层将面向对象应用设计同关系型数据库分离开。

  Data Mapper:解决数据模型和持久化的表结构之间完全的解耦合的问题。

  Row Data Gateway:解决更细致的数据模型和持久化的表结构之间完全解耦的问题。

  Table Data Gateway:解决更细致的数据模型和持久化的表结构之间完全解耦的问题。

  Active Record:解决降低应用中面向对象数据模型与数据库中表结构之间的耦合的问题。