从事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模式的典型应用
分享到:
相关推荐
《设计模式学习笔记》主要探讨了GOF的23种设计模式以及类设计的基本原则,旨在帮助开发者理解和应用这些经过时间验证的成熟解决方案。设计模式是面向对象软件设计中的核心概念,它们为解决常见的设计问题提供了标准...
这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...
以上就是压缩包中的设计模式学习笔记涉及到的主要内容。通过对这些模式的理解和应用,开发者可以更好地解决软件设计中的问题,提升软件的质量和可维护性。每种模式都有其适用场景,理解其背后的意图和应用场景是关键...
### Java设计模式学习笔记 #### 1. 设计模式的七大原则 ##### 1.1 设计模式的目的 设计模式是一种解决特定问题的通用解决方案,它可以帮助开发人员编写出更高质量、更容易维护和扩展的代码。设计模式的目标在于...
《HeadFirst设计模式学习笔记》是一份详尽的资料,旨在帮助读者深入理解并掌握设计模式这一编程领域的核心概念。设计模式是软件工程中的一种最佳实践,它在解决常见问题时提供了一种标准的解决方案,使得代码更易于...
设计模式学习笔记.ppt 自己写的一点学习笔记。
这个“23种设计模式学习笔记”文档将引导你深入理解这些模式,并帮助你在实际编程中有效地应用它们。以下是对23种设计模式的详细解读: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。它常用于控制...
### Head First 设计模式学习笔记知识点总结 #### 1. 欢迎来到设计模式世界:设计模式入门 - **业务场景**: - **需求背景**:开发一款模拟鸭子的游戏,游戏内包含多种不同种类的鸭子,每种鸭子具有不同的外观...
《HeadFirst设计模式学习笔记1--策略模式Demo》 在软件工程中,设计模式是一种解决常见问题的标准方案,它提供了一种在特定情况下组织代码的模板。策略模式是设计模式中的一种行为模式,它允许在运行时选择算法或...
### Head.First 设计模式学习笔记知识点总结 #### 一、设计模式概述 设计模式是一种用于解决软件设计中常见问题的标准化方法。通过采用设计模式,开发者可以提高代码的复用性、灵活性和可维护性。《Head First 设计...
以下是对“C#设计模式学习笔记”中涉及的一些关键知识点的详细解释。 1. **设计模式的基本概念**: 设计模式是一种在特定上下文中已被证明有效的解决方案模板,它描述了如何在软件设计中解决常见问题。设计模式...
在“HeadFirst 设计模式学习笔记3--装饰模式 Demo”中,作者通过实例讲解了装饰模式的基本概念、结构和应用场景。这篇文章可能是从CSDN博客平台上的一个链接访问的,遗憾的是,由于我们当前无法直接访问该链接,所以...
在这个“#资源大人分享计划# 设计模式学习笔记.rar”压缩包中,我们可以期待找到一系列关于设计模式的详细学习资料,包括定义、类图、代码示例以及各种使用场景,这些都将帮助我们深入理解并掌握设计模式。...
"GoF 23种设计模式学习笔记" 是一个深入探讨这23个经典设计模式的资源,这些模式最初由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者在1994年的著作《设计模式:可复用面向对象软件的基础》中...
### 23种设计模式学习笔记 #### 一、软件设计模式的概念与意义 **概念:** 软件设计模式(Software Design Pattern),又称设计模式,是一套被广泛采用、经过整理和分类的代码设计经验总结。它针对软件设计过程中...
读书笔记:设计模式学习笔记和代码。《图解设计模式》《Head First 设计模式》