主流MVC框架的设计模式及遵守的软件设计原则

原文地址,会不断更新 作程的技术博客

本文以主流的MVC框架为例,比如Java 的SSH、PHP的Symfony和Zend Framework ,在简单地剖析他们的设计原理之后,找到其中使用的设计模式;鉴赏他们的代码实现,查看设计者们都遵守了哪些软件设计原则。作此文,一为学习,二为总结。其中下面所写内容可能并不全面,也可能不准确,但会不断修改完善。

框架模式MVC 模式y = f (x)View = Controller (Model, Request)Active Record 模式Yii Active RecordRuby on Rails Active RecordORM 模式PHP 的 DoctorineJava 的 Hibernate三/四层架构,3/4-TIER ARCHITECTUREMVC 框架会借鉴三/四层架构的分层思想,对整个系统进行分层,最常见的是在 Model 层中再细分层次。SSH 的 DAO/JavaBean、Service、Response 等Symfony 2 的 Doctrine、Service、view 等设计模式的使用复合模式,Compound PatternMVC框架如果不使用复合模式,本文也没有任何意义了单例模式,Singleton PatternController 、 Context、 View 等框架核心类使用了单例模式多例模式,Multition Pattern各类资源池、进程池、线程池(PHP 的后面两个用不上)策略模式,Strategy Pattern代理模式,Proxy Pattern抽象类的使用工厂模式,Factory Methond Pattern

Action 对象的创建

抽象工厂模式,Abstract Factory PatternajxaAction 、 WebAction 、 APIAction 以及 ajax和web组合的Action 或者 ajax和API组合的Action,复杂的框架会使用抽象工厂模式门面模式,Facade Pattern

Logger 类,将第三方开源Logger类封装统一接口,将第三方 Logger 繁冗接口屏蔽

Adapter PatternZend Framework 的 Zend_Db_Adapter 类,将具体不同的数据库(Mysql、Oracle、SQLite)类接口通过Driver类封装,为上层提供统一接口Zend_Cache 对不同cache的接口的再次封装模版模式,Template Method Pattern各种复杂逻辑的抽象类框架的扩展类建造者模式,Builder Pattern依赖注入原则的遵守和实践,将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Content 对象的创建者是 ControllerConfig 对象的创建ORM 的 Object 对象创建桥梁模式,Bridge Pattern命令模式,Command PatternHttp 请求的解析就是命令模式Symfony 2 的 ConsoleSymfony 2 的 Command 类装饰模式,,Decorator PatternajxaAction 、 WebAction 、 APIAction 以及 ajax和web组合的Action 或者 ajax和API组合的Action迭代器模式,Iterator Pattern路由设置的遍历组合模式,Composite Pattern观察者模式,Observer Pattern各种 Trigger 类各类自定义的扩展责任链模式,Chain of Responsibility Pattern路由的解析,尤其是Restful风格的URL,依据路由表(责任链),定位Action 类和方法访问者模式,Visitor Pattern状态模式,State Patter原型模式,Prototype PatternAction 中,讲执行权移交给另外一个 Action ,比如redirect 或者 forward,获得执行的Action还要和原有Action的属性、状态、上下文一致。原型模式是比较好的选择。中介者模式,Mediator Pattern充当中介者的类是 Context,某些框架Context类,为Request、Respose、GlobalConfig 等等单例类进行抽象,为业务代码提供唯一的调用方式,即Context的类提供的接口解释器模式,Interpreter Pattern亨元模式,Flyweight Pattern通用状态类各种 Util 类HTTP meta 类、特殊字符享元归类备忘录模式,Memento Pattern系统日志、状态,以支持回滚数据库事务软件设计原则 SOLID单一职责原则(Simple responsibility pinciple SRP)开-闭原则(Open-Closed Principle, OCP)里氏代换原则(Liskov Substitution Principle,LSP)迪米特法则(Law of Demeter LoD),最少知识原则(Least Knowledge Principle,LKP)接口隔离原则(Interface Segregation Principle, ISP)依赖倒置原则(Dependence Inversion Principle)建造者模式的使用路由表的使用,或其他各种配置都收集到配置文件中,使用依赖注入容器,实现代码和实现的解耦

用积极的拼搏迎接雨后的彩虹,相信自己

主流MVC框架的设计模式及遵守的软件设计原则

相关文章:

你感兴趣的文章:

标签云: