首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式学习笔记

2012-10-20 
设计模式学习笔记从事Java开发从2006年7月至今也有近4年时间了,这几年学过的与接触过的东东是很多了,但是

设计模式学习笔记
从事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文件存储实现

当然现在这些都可以交给Spring IOC容器来完成了

7.策略模式(Strategy)
策略模式是一种定义一系列算法的方法,从概念上来看所有这些算法完成的都是相同的工作,只是具体实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用者类之间的耦合。

常见的应用场景有:商场收银软件、电子商务网的折扣处理

8.装饰模式(decorator)
动态的给一个对象添加一些额外的职责,就增加功能来说装饰模式比生成子类更为灵活。

在有些应用场景下需要很多功能的各种组合,如果说这些功能的组合是通过继承方式来实现的话,那么每一种组合都需要一个类,这样就会出现大量的重复性代码,而类数目也成“爆炸性”。而如果采用装饰模式,那么不仅类的数目大大减少了,重复的代码也可以减至到最少。

9.适配器模式(adapter)
将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能工作的那个类可以一起工作。在日常生活中有很多适配器模式的例子:如电源适配器、网络适配器等。

只有在软件开发后期或维护期间,又或者在无法改变原有设计和代码时才考虑使用适配器模式,如果是有小的接口不统一时应当及时重构避免问题扩大化。事后控制不如事中控制,事中控制不如事前控制。

Java I/O库就是decorator与adapter模式的典型应用

热点排行