1.找出应用中可能变化的之处,把他们独立出来,不要和那些不需要变化的代码混在一起。
结果:由于代码变化引起的不经意变化减少,系统弹性减少。
2.针对接口编程,而不是针对实现(具体)编程。
使用委托,而不是继承。 动态设定行为。
类之间的关系可以是 "is a"-是一个,也可以是"has a",有一个。
多用组合,少用继承。
jdk中最常用的模式观察者模式
观察者模式定义了对象之间的一对多依赖关系,当依赖对象的状态改变,其他对象都会知悉并自动更新。
3.使交互对象之间松耦合
java.util.Observable 是一个类,而不是一个接口。它把setChanged方法设为protected,除非使用继承,否则不能将它组合进来,违反了oo规则"多用组合,少用继承"
4.类应该对修改关闭,对扩展开放。
装饰者模式:动态的将责任附加到对象上,比继承更有弹性。
但是会引入很多的小类。
工厂模式
定义了一个创建对象的接口,由子类决定要创建的对象是哪一种类型。
5.依赖倒置原则
要依赖抽象,不要依赖具体类。
如何做到依赖倒置呢,有以下原则:
变量不可以有具体类的应用,用工厂方法解决;
不要让类派生自具体类;
不要覆盖基类中实现的方法;(基类中的方法应该在所有子类中共享)
抽象工厂模式
提供一个接口用于创建相关和依赖对象的家族,而不需要指明具体的类。
抽象工厂 vs 工厂
抽象工厂定义了一个生产一组产品的接口,而这个接口的每个方法负责创建一个产品。
分享到:
相关推荐
CSS 学习笔记Head First HTML&CSS 学习笔记 Head First HTML&CSS 学习笔记Head First HTML&CSS 学习笔记 Head First HTML&CSS 学习笔记Head First HTML&CSS 学习笔记 Head First HTML&CSS ...
CSS学习笔记HeadFirst HTML&CSS学习笔记 HeadFirst HTML&CSS学习笔记HeadFirst HTML&CSS学习笔记 HeadFirst HTML&CSS学习笔记HeadFirst HTML&CSS学习笔记 HeadFirst HTML&CSS学习笔记Head...
《HeadFirst设计模式学习笔记》是一份详尽的资料,旨在帮助读者深入理解并掌握设计模式这一编程领域的核心概念。设计模式是软件工程中的一种最佳实践,它在解决常见问题时提供了一种标准的解决方案,使得代码更易于...
著名的《Head First Design Pattern》学习笔记,摘要这本书中的设计思路。由于书本过长,整理出笔记帮助回想起设计模式。文件是docx格式,只能由OFFICE Word 2007之后的版本打开,内附Visio类图文件。本文由个人整理...
《Head First Servlets & JSP》是一本广受欢迎的教材,它深入浅出地讲解了这些概念,帮助开发者通过SCWCD(Sun Certified Web Component Developer)认证。以下是一些关键知识点的详细解释: 1. **Servlet**: - *...
《Head First Servlet & JSP》是一本非常受欢迎的IT教程,专为准备SCWCD(Sun Certified Web Component Developer)认证的读者设计。本书以其独特的学习风格,深入浅出地介绍了Servlet和JSP(JavaServer Pages)这两...
在“HeadFirst 设计模式学习笔记3--装饰模式 Demo”中,作者通过实例讲解了装饰模式的基本概念、结构和应用场景。这篇文章可能是从CSDN博客平台上的一个链接访问的,遗憾的是,由于我们当前无法直接访问该链接,所以...
《HeadFirst设计模式学习笔记1--策略模式Demo》 在软件工程中,设计模式是一种解决常见问题的标准方案,它提供了一种在特定情况下组织代码的模板。策略模式是设计模式中的一种行为模式,它允许在运行时选择算法或...
【Servlet&JSP基础知识】 ...以上是`head_first_servlet&jsp`学习笔记的主要知识点,涵盖了Servlet和JSP的基础、Web应用架构、MVC模式、会话管理和JSP编程等多个方面,为深入理解和实践Servlet与JSP开发奠定了基础。
### Head First Ajax 学习笔记知识点总结 #### 一、异步请求与AJAX概念 - **异步请求**:允许页面在发送请求时继续执行后续任务,无需等待服务器响应,提高了用户体验。 - **AJAX (Asynchronous JavaScript and ...
总的来说,HeadFirst设计模式的学习笔记2关于观察者模式的演示,旨在帮助开发者理解如何使用观察者模式来构建可扩展的系统。通过实际的代码示例,我们可以更深入地掌握这一模式,并将其应用到日常开发中,提升代码的...
本学习笔记将深入探讨如何在C#中创建事件,以实现一个棒球模拟系统的例子。在这个系统中,我们将关注投球手、观众和裁判的交互,当输入棒球的轨迹和距离时,这些对象会根据模拟结果做出相应的反应。 首先,理解事件...
本项目为《Head First 设计模式》的Java语言学习笔记与实战练习源码集合,包含104个文件,主要包括88个Java源文件、12个Markdown文档、3个XML配置文件及少量其他辅助文件。内容涵盖设计模式的学习笔记以及相应的代码...
Python 是一种高级语言,具有自动内存管理和动态类型检查的特性,易于学习和使用。 2. Python 的编辑环境 IDEL 是 Python 的编辑环境,提供了代码编辑、调试和测试等功能。 TAB 键可以给出提示语句,Alt-P 可以...
《Head First Java》是一本备受推崇的Java编程学习书籍,其中文高清PDF版本为学习者提供了方便快捷的阅读体验。这本书以其独特的教学风格和丰富的视觉元素,帮助初学者以直观易懂的方式理解复杂的Java概念。 Java是...
### Head.First 设计模式学习笔记知识点总结 #### 一、设计模式概述 设计模式是一种用于解决软件设计中常见问题的标准化方法。通过采用设计模式,开发者可以提高代码的复用性、灵活性和可维护性。《Head First 设计...