设计模式(DesignPattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
一、软件开发设计原则:(七大原则)
开闭原则:软件实体对扩展开放、对修改关闭(用抽象构建架构,用实现扩展细节)
单一职责原则:类或接口的职责要单一、只做一件事,保证功能的单一性、纯洁性
依赖倒置原则:要针对抽象层编程,而不要针对具体实现类编程
接口隔离原则:一个接口不要包含过多的职责,应合理划分,跟单一职责原则相辅相成
迪米特法则:即最少知道原则,一个对象对其他对象的引用越少越好,比如控制好public、private修饰符范围
里式替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能
合成复用原则:尽量使用对象的组合和聚合关系,少使用继承关系达到代码复用的目的
二、使用设计模式和不用设计模式的区别?
不用:喝酒唱歌,人生真爽。
使用:对酒当歌,人生几何?
三、为什么要学设计模式?
写出优雅的代码
更好地重构项目
经典框架都在用设计模式解决问题
不用设计模式并非不可,但用好设计模式能帮我们更好地解决实际问题,设计模式最重要的是解耦。设计模式天天都在用,但自己却无感知。我们主要是学习设计模式是如何总结经验的,把经验为自己所用。学设计模式也是锻炼将业务需求转换成技术实现的一种非常有效的方式。
四、23种设计模式
设计模式分为三大类:
创建型模式,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共7种:适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
五、举例spring源码中用到的设计模式
工厂模式:BeanFactory
装饰者模式:BeanWrapper
代理模式:AopProxy
单例模式:ApplicationContext
委派模式:DispatcherServlet
策略模式:HandlerMapping
适配器模式:HandlerAdapter
模板方法模式:JdbcTemplate
观察者模式:ContextLoaderListener
六、后面讲解的设计模式思路
需要特别声明的是,设计模式从来都不是单个设计模式独立使用的。在实际使用中,通常是多个设计模式混合使用,你中有我,我中有你。
会围绕经典框架Spring所使用的设计模式来讲解。
Spring IOC:工厂、单例、装饰者
Spring AOP:代理、观察者
Spring MVC:委派、适配器
Spring JDBC:模板方法
补充:不要为了套用设计模式而使用设计模式,而是在业务上遇到问题时,很自然地想到设计模式作为一种解决方案。
设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
下一篇:软件开发——一个学习的过程