设计模式学习笔记
从事Java开发从2006年7月至今也有近4年时间了,这几年学过的与接触过的东东是很多了,但是现在感觉好像什么都懂又好像什么都不懂,是应该好好静下心来沉淀一些东西,坚持每周写一到两篇博客,就从设计模式开始吧
学习资料与书籍
1.Java与模式 作者:阎宏博士
2.HeadFirst设计模式 作者:Eric Freeman, Elisabeth Freeman, With Kathy ierra, Bert Bates
3.大话设计模式 作者:陈杰
4.网络上的一些技术文章
面向对象的编程,并不是类越多越好,类的划分是为了封转,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。
编程是一门技术,更加是一门艺术
1. 单一职责原则
软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。如果一个类承担的职责过多,就等于把这些职责耦合在一起,这种耦合会导致脆弱的设计,当变化发生时设计会遭受到意向不到的破坏。
编程时,要在类的职责分离上多思考,做到单一职责,这样的代码才是真正的易维护、易扩展、易复用、灵活多样。
2.开放封闭原则
对扩展开放,对修改关闭。面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
开闭原则是面向对象设计的核心所在,遵循这个原则才能带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。
3.依赖倒转原则
PC由于易插拔的方式,不管哪一个部件出问题,都可以在不影响其他部件的前提下进行修改或替换,PC电脑叫易插拔,面向对象叫强内聚,松耦合。
抽象不应该依赖细节,细节应该依赖于抽象,就是说要针对接口编程,不要对实现编程
4.里氏代换原则
里氏代换原则是Barbara Liskov 女士在1988年发表的。
在软件里面,把父类都替换成它的子类,程序的行为没有变化。简单的说,子类型必须能够替换掉它们的父类型。
5.简单工厂模式(Simple Factory)
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说去除了与具体实现的依赖。
6.抽象工厂模式(Abstract Factory)
抽象工厂模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,抽象工厂模式保持了简单工厂模式封转对象创建过程的优点,克服了简单工厂违背开闭原则的缺点。
一个最常见的应用场景数据库访问DAO
interface UserDAO{ insert(User user); updateByUserId(User user); selectByUserId(int userId);}interface ItemDAO{ ...}interface DAOFactory{ getUserDAO(); getItemDAO();}MySQLDAOFactory //MySQL数据库存储实现OracleDAOFactory //Oracle数据库存储实现XMLDAOFactory //XML文件存储实现