程序设计的思想、架构、模式

这是一篇摘抄,介绍了在软件开发中思想、架构、模式、框架这些概念。

思想

编程范型、编程范式、编程思想或程序设计方法(Programming Paradigm)
编程范式

  • 面向代理(AOP:Agent-oriented Programming),相对于OOP,以代理人为核心
  • 声明式编程(Declarative Programming),包括数据库查询语言(SQL)、正则表达式、逻辑编程、函数式编程和组态管理系统,常用解决人工智能和约束满足问题,对应为命令式编程
    • 函数式编程(Functional Programming),语言:Haskell/F#/Scala/Erlang/Lisp/R
  • 命令式编程(Imperative Programming),运算语句、循环语句、条件分支语句、无条件分支语句(GOTO),语言:FORTRAN
    • 非结构化,语言:BASIC/机器语言/早期汇编语言
    • 结构化(Structured Programming),使用子程序、代码区块、for循环、while循环等结构代替GOTO
      • 面向过程(Procedural Programming):Linux内核、git、Apache HTTP Server等
      • 面向对象(OOP:Object-oriented Programming),将对象作为程序的基本单元,语言:Python、C++、Objective-C、Delphi、Java、Swift、C#、Perl、Ruby、PHP
        • 基于类(Class-orientation Programming),所有创建对象都是类的实例
        • 基于原型(Prototype-based Programming),类不是实时的,且行为重用,语言:Self、JavaScript
  • 元编程(Metaprogramming),最常见的元编程工具是编译器,操作其他程序,或在运行中完成部分编译工作
    • 自动
      • 泛型,允许在强类型语言中使用以后才置顶的类型
        • 模版
    • 反射式,在运行时可以访问、检测和修改它本身,如用汇编来汇编
    • 宏(Macro)
  • 事件驱动(Event-driven Programming),图形用户界面
    • 面向服务(SOA:Service-oriented Architecture)
  • 并行计算(Parallel Computing)

架构

有关软件整体结构与组件的抽象描述,用于知道大型软件系统各方面的设计

定义和设计软件的模块化、模块之间的交互、用户界面风格、对外接口方法、创新的设计特性,以及高层事物的对象操作、逻辑和流程。

可以用UML视图来表示

模式

1、代码模式或成例(Coding Pattern 或 Idiom)
  代码模式(或成例)是较低层次的模式,并与编程语言密切相关。代码模式描述怎样利用一个特定的编程语言的特点来实现一个组件的某些特定的方面或关系。
  较为著名的代码模式的例子包括双检锁(Double-Check Locking)模式等。
2、设计模式(Design Pattern)
  一个设计模式提供一种提炼子系统或软件系统中的组件的,或者它们之间的关系的纲要设计。设计模式描述普遍存在的在相互通讯的组件中重复出现的结构,这种结构解决在一定的背景中的具有一般性的设计问题。
  设计模式常常划分成不同的种类,常见的种类有:
  创建型设计模式,如工厂方法(Factory Method)模式、抽象工厂(Abstract Factory)模式、原型(Prototype)模式、单例(Singleton)模式,建造(Builder)模式等
  结构型设计模式,如合成(Composite)模式、装饰(Decorator)模式、代理(Proxy)模式、享元(Flyweight)模式、门面(Facade)模式、桥梁(Bridge)模式等
  行为型模式,如模版方法(Template Method)模式、观察者(Observer)模式、迭代子(Iterator)模式、责任链(Chain of Responsibility)模式、备忘录(Memento)模式、命令(Command)模式、状态(State)模式、访问者(Visitor)模式等等。
以上是三种经典类型,实际上还有很多其他的类型,比如Fundamental型、Partition型,Relation型等等
  设计模式在特定的编程语言中实现的时候,常常会用到代码模式。比如单例(Singleton)模式的实现常常涉及到双检锁(Double-Check Locking)模式等。
  3、架构模式(Architectural Pattern)
  一个架构模式描述软件系统里的基本的结构组织或纲要。架构模式提供一些事先定义好的子系统,指定它们的责任,并给出把它们组织在一起的法则和指南。有些作者把这种架构模式叫做系统模式[STELTING02]。
  一个架构模式常常可以分解成很多个设计模式的联合使用。显然,MVC模式就是属于这一种模式。MVC模式常常包括调停者(Mediator)模式、策略(Strategy)模式、合成(Composite)模式、观察者(Observer)模式等。
  此外,常见的架构模式还有:
  ·Layers(分层)模式,有时也称Tiers模式
  ·Blackboard(黑板)模式
  ·Broker(中介)模式
  ·Distributed Process(分散过程)模式
  ·Microkernel(微核)模式
  架构模式常常划分成如下的几种:
  一)、 From Mud to Structure型。帮助架构师将系统合理划分,避免形成一个对象的海洋(A sea of objects)。包括Layers(分层)模式、Blackboard(黑板)模式、Pipes/Filters(管道/过滤器)模式等。
  二)、分散系统(Distributed Systems)型。为分散式系统提供完整的架构设计,包括像Broker(中介)模式等。
  三)、人机互动(Interactive Systems)型,支持包含有人机互动介面的系统的架构设计,例子包括MVC(Model-View-Controller)模式、PAC(Presentation-Abstraction-Control)模式等。
  四)、Adaptable Systems型,支持应用系统适应技术的变化、软件功能需求的变化。如Reflection(反射)模式、Microkernel(微核)模式等。
引用源