综合      软件的开发模式、架构模式、设计模式   
文章目录  [隐藏]

一.开发模式

客户、项目经理、程序员,人的交流和管理。
1.边做边改:既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。
2.瀑布流:严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。
3.迭代开发:迭代是一次完整地经过所有工作流程的过程:需求、分析设计、实施和测试工作流程。类似小型的瀑布式项目。整个项目所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。
4.快速原型:先快速的开发一个原型app,客户对其进行评价,进一步细化需求。然后在此基础上开发客户满意的软件产品。
5.演化开发:重复执行的多个“瀑布模型”。
6.增量开发:整个产品被分解成若干个构件,开发人员逐个构件地交付产品。
6.螺旋模型:若干次/阶段的“计划,分析,实施,交付”。
7.喷泉模型:以用户需求为动力,以对象为驱动。
8.敏捷模型-SCRUM:快速响应需求,和业务方对面沟通,频繁交付版本。
9.智能模型:依赖4GL语言的开发。
10.混合模式(过程开发):混合模型、元模型。整个项目中把几种不同模型组合成一种混合模型,至少1个核心项目能沿着最有效的路径发展。
11.敏捷开发:以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。

二.架构模式

将客户的需求进行拆解归纳,划分成若干关系密切但可独立代码实现的功能。
1.分层模式:MVC+DAO,通常包括:UI层、服务层、业务逻辑层、数据访问层。例:一般的单机软件、客户端软件、设计UI的软件。
2.客户端-服务器模式:CS(Client-Server)、BS(Browser-Server)。例:邮箱。
3.主从设备模式:Master-Slave,例:Hadoop。
4.管道-过滤器模式:类似流水线。例:层级审批系统、编译器。
5.代理模式:客户端从代理请求服务,然后代理将客户端重定向到其注册中心的适当服务。
6.点对点模式:对等点可以充当客户端或服务器或两者的角色,并且可以随时间动态地更改其角色。P2P类软件。
7.事件总线模式:处理事件。消息源将消息发布到事件总线上的特定通道上。订阅了通道的侦听器会被通知消息。例:交互类-安卓app。
8.模型-视图-控制器模式:MVC、MVP、MVVM。
9.黑板模式:针对没有确定解决方案策略的问题。例:语音识别、图像识别。
10.解释器模式:用于设计一个解释 用专用语言编写的程序 的组件。如:sql,解释sql语句。

三.设计模式

如何编写代码的,提高代码可复用性、可维护性、可读性、稳健性以及安全性的方案/方式。
1.面向对象设计的七大原则:开闭原则、里氏替换、依赖倒置、单一职责、接口隔离、迪米特、合成复用。

2.创建型模式:“创建与使用相分离”
 1)单例模式:一个类只有一个实例,且该类能自行创建这个实例。
 2)原型模式:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。
 3)简单工厂(静态工厂):违背开闭原则。定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。
 4)工厂方法:对简单工厂模式的进一步抽象化。单一产品工厂。
 5)抽象工厂:综合型工厂。
 6)建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。

3.结构型模式:
 1)代理模式:给对象提供一个代理以控制对该对象的访问。
 2)适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
 3)桥接模式:用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。
 4)装饰器模式:在不改变现有对象结构的情况下,动态地给该对象增加一些职责。
 5)外观模式(门面模式):为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。
 6)享元模式:运用共享技术来有效地支持大量细粒度对象的复用。
 7)组合模式(整体-部分模式):将对象组合成树状的层次结构的模式,表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性。

4.行为型模式:
 1)模板方法:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
 2)策略模式:定义一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。
 3)命令模式:将请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。
 4)责任链模式(职责链模式):为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链。
 5)状态模式:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。
 6)观察者模式:多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
 7)中介者模式(调停模式):定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。
 8)迭代器模式:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。
 9)访问者模式:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。
 10)备忘录模式(快照模式):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。
 11)解释器模式:用编译语言的方式来分析应用中的实例。


- end

承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设