软件设计模式与框架模式

软件框架模式:
1、MVC

MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)
设计创建 Web 应用程序的模式:
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分(比如数据库记录列表)。
  通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分(数据库记录)。
  通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分(写入数据库记录)。
  通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。


2、MTV
M 代表模型(Model):负责业务对象和数据库的关系映射(ORM)。


T 代表模板 (Template):负责如何把页面展示给用户(html)。


V 代表视图(View):负责业务逻辑,并在适当时候调用Model和Template。


3、MVP
M(Model)
数据层,和MVC中的M一样,用来放数据的处理(比如网络请求,缓存等)。


V(View)
负责UI具体实现展现。比如Presenter派发过来一个动作是showDialog显示进度命令,那么我们这个View就负责实现具体UI。


P(Presenter)
负责处理业务逻辑代码,处理Model数据,然后将处理完的数据分发到View层。


在MVP中View并不直接使用Model,它们之间的通信是通过Presenter
在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的View是没有直接关联的,而是通过接口进行交互,从而使得在变更View时候可以保持Presenter的不变,可以多次复用。
在MVP里,应用程序的逻辑主要在Presenter来实现,其中的View是很薄的一层,只应该有简单的Set/Get的方法,用户输入和设置界面显示的内容,除此就不应该有更多的内容,绝不容许直接访问Model。
MVP主要解决就是把逻辑层抽出来成P层,要是遇到需求逻辑上的更改就可以只需要修改P层了或者遇到逻辑上的大改我们可以直接重写一个P也可以,很多开发人员把所有的东西都写在了Activity/Fragment里面这样一来遇到频繁改需求或者逻辑越来越复杂的时候,Activity /Fragment里面就会出现过多的混杂逻辑导致出错,所以MVP模式对于APP来对控制逻辑和UI的解耦来说是一个不错的选择。

优点:
代码解耦
结构清晰
可复用
扩展性高
方便进行单元测试


4、CBD
ThinkPHP3采用的模式
CBD(核心Core+行为Behavior+驱动Driver)架构模式






5、ORM
对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)
实现面向对象编程语言里不同类型系统的数据之间的转换
创建了一个可在编程语言里使用的--“虚拟对象数据库”。
ORM方法论基于三个核心原则: 
简单:以最基本的形式建模数据。 
传达性:数据库结构被任何人都能理解的语言文档化。 
精确性:基于数据模型创建正确标准化的结构。
ORM相当于中继数据
把对象模型表示的对象映射到基于S Q L 的关系模型数据库结构中去。
具体的操作实体对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作实体对象的属性和方法




设计模式:
1、工厂模式:

工厂模式主要出现在mvc的m层,通过工厂函数实例化生成一个model类实例,来对这个数据模型进行curd等操作。
工厂模式中有: 工厂方法(Factory Method) 抽象工厂(Abstract Factory).

Java中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。


2、适配器模式:
适配器模式则出现在很多框架的“驱动”这一概念上,比如说,用orm写的增删改逻辑,如果要替换数据库系统,那么只需要修改驱动代码来适配新的数据库系统,而不需要修改业务代码。
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。






设计模式的六大原则
1、开闭原则(Open Close Principle)
开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。


2、里氏代换原则(Liskov Substitution Principle)
里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

3、依赖倒转原则(Dependence Inversion Principle)
这个原则是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)
这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。

5、迪米特法则,又称最少知道原则(Demeter Principle)
最少知道原则是指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则(Composite Reuse Principle)
合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值