Java与模式读书笔记
》设计目标:可扩展性,灵活性,可插入性。
》设计原则
● Open Closed Principle 开闭原则
对扩展开放,对修改关闭。
对面向对象的语言来说,不可以更改的是系统的抽象层,而可以扩展的是系统的实现层。
●里式代换原则
任何基类可以出现的地方,子类一定可以出现。
●依赖倒转原则
要依赖于抽象,不要依赖于实现。
●合成/组合原则
尽量使用复合而不是继承
●迪米特法则
一个软件的实体应该减少与其他实体发生相互作用。
●接口隔离原则
应该提供小的单独接口。
》抽象类
●抽象类应该拥有尽可能多的代码。
●抽象类应当拥有竟可能少的数据。
》创建模式:是对类的实例化过程的抽象化。
●类的创建模式:类的创建模式使用继承关系,把类的创建延迟到子类。从而封装了客户端将得到哪些具体类的信息。
●对象的创建模式:把对象的创建过程动态的委派给另一个对象。从而动态的决定客户端将得到那些具体类的实例。
》简单工厂模式(Simple Factory)
● 工厂类角色(Creator):工厂类在客户端的直接调用下创建产品对象。他往往有一个具体的Java类实现。
● 抽象产品角色(Product):是所有创建对象的父类,或是共同的接口。抽象产品的角色可以用一个Java接口实现。
●具体产品角色(Concrete Product):创建的任何角色都是这个对象的实例。有具体java类实现。
》工厂方法模式(Factory Method)
●定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类。
●抽象工厂角色(Creator):它是与应用程序无关的,任何在模式中创建对象的工厂类必须实现这个接口。
●具体工厂角色(Concrete Creaor):实现抽象接口,与应用密切的逻辑。并且受到程序的调用用来创建产品对象。
● 抽象产品角色(Product):是所有创建对象的父类,或是共同的接口。抽象产品的角色可以用一个Java接口实现。
●具体产品角色(Concrete Product):创建的任何角色都是这个对象的实例。有具体java类实现。
》抽象工厂模式(Abstract Factory)
●工厂方法模式对应的是一个产品等级结构。抽象工厂对应多个。
●抽象工厂角色(Creator):它是与应用程序无关的,任何在模式中创建对象的工厂类必须实现这个接口。
●具体工厂角色(Concrete Creaor):实现抽象接口,与应用密切的逻辑。并且受到程序的调用用来创建产品对象。
● 抽象产品角色(Product):是所有创建对象的父类,或是共同的接口。抽象产品的角色可以用一个Java接口实现。
●具体产品角色(Concrete Product):创建的任何角色都是这个对象的实例。有具体java类实现。
》单例模式(Single)
●某个类只有一个实例。
●自己创建实例。
●向整个系统提供实例。
》建造模式(Builder)
●将一个产品的内部表象与产品的生产过程分隔开来,从而可以使一个建造过程生成具有不同表象的产品对象。
●抽象建造者角色(Builder:给出一个抽象接口,以规范产品对象的各个组成成分的构建。
●具体建造者(Concrete Builder):与应用程序紧密相关联的一些类。他们在应用程序下调用创建产品的实例。
●产品角色(Product):建造中的复杂对象。
●导演者角色(Director):调用具体建造者创建产品对象。
》原型模式(Prototype)
●给出一个原型对象来指明要创建的对象的类型,然后复制这个原型对象的办法来创建出更多类型的对象。
●客户端角色(Client):客户端向管理员提出创建对象的请求。
●抽象原型角色(Prototype)抽象接口
●具体原型角色(Concrete Prototype)被复制的对象。
●原型管理器(Prototype Manager)创建具体原型类的对象。
》》结构模式:如何将类或者对象结合在一起形成更大的结构。
●类的结构模式:通过继承
●对象的结构模式:把不同类型的对象组合在一起。
》适配器模式(Adapter):把类的接口转变为客户端所期待的另一种接口。
●目标角色(Target):期待的接口。
●源角色(Adatee):现在需要适配的接口。
●适配器角色(Adapter):把源接口转换为适配器接口。
》合成模式(Composite)将对象组织到树结构中,可以用来描述整体与部分的关系。
●抽象构件角色(Component):这是一个抽象的角色,他给参加组合的对象定义出公共的接口及其默认的行为。用来管理所有的子对象。
●树叶构件角色(Leaf)没有下级子对象的对象。定义出参加组合的原始对象的行为。
●树枝构件对象(Composite) 代表参加组合的有下级子对象的对象。
》装饰模式:以对客户透明的方式扩展对象的功能。
●抽象构件角色(Component)规范准备接受附加责任的对象。
●具体构件(ConCrete Component)定义一个将要接收附加责任的类。
●装饰角色(Decorator)持有一个构件对象的实例,并定义一个与抽象构件一致的接口。
●具体装饰角色(Concrete Decorator)负责给对像贴上附加的责任。
》代理模式
●抽象主题角色 声明了真实主题和代理主题的共同接口,
●代理主题角色:含有对真实主题的引用,可以在任何的时候操作主体对象。
●真实主题角色:真实对象。
》亨元模式:亨元模式以共享的方式高效的支持大量的细粒度对象。
●抽象亨元角色:具体亨元类的超类。
●具体亨元角色:实现抽象所规定的接口。
●亨元工厂角色:创建和管理亨元角色。
●客户端:对亨元对象的引用。
》门面模式(Facade)外部与一个子系统通信必须通过一个门面对象进行。
●门面角色(Facade)客户端调用这个方法。此角色知晓相关子系统的功能和责任。
●子系统角色(Subsystem)可以是一个或多个。
》桥梁模式(Bridge)将抽象化与实现化解耦。
Java与模式读书笔记的更多相关文章
- 图解java 多线程模式 读书笔记
第1章"Single Threaded Execution模式--能通过这座桥的只有一个人" 该模式可以确保执行处理的线程只能是一个,这样就可以有效防止实例不一致. 第⒉章&quo ...
- 《深入java虚拟机》读书笔记之垃圾收集器与内存分配策略
前言 该读书笔记用于记录在学习<深入理解Java虚拟机--JVM高级特性与最佳实践>一书中的一些重要知识点,对其中的部分内容进行归纳,或者是对其中不明白的地方做一些注释.主要是方便之后进行 ...
- 《大型网站系统与Java中间件》读书笔记 (中)
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾上一篇: <大型网站系统与Java中间件& ...
- JAVA编程思想读书笔记(五)--多线程
接上篇JAVA编程思想读书笔记(四)--对象的克隆 No1: daemon Thread(守护线程) 参考http://blog.csdn.net/pony_maggie/article/detail ...
- JAVA编程思想读书笔记(四)--对象的克隆
接上篇JAVA编程思想读书笔记(三)--RTTI No1: 类的克隆 public class MyObject implements Cloneable { int i; public MyObje ...
- JAVA编程思想读书笔记(三)--RTTI
接上篇JAVA编程思想读书笔记(二) 第十一章 运行期类型判定 No1: 对于作为程序一部分的每个类,它们都有一个Class对象.换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说, ...
- JAVA编程思想读书笔记(二)--容器
接上篇JAVA编程思想读书笔记(一) 第八章.对象的容纳 No1: java提供了四种类型的集合类:Vector(矢量).BitSet(位集).Stack(堆栈).Hashtable(散列表) No2 ...
- 《深入java虚拟机》读书笔记之Java内存区域
前言 该读书笔记用于记录在学习<深入理解Java虚拟机--JVM高级特性与最佳实践>一书中的一些重要知识点,对其中的部分内容进行归纳,主要是方便之后进行复习. 运行时数据区域 Java虚拟 ...
- Java并发编程读书笔记(一)
----------------------------------------------<Java并发编程实战>读书笔记-------------------------------- ...
随机推荐
- 【服务器】CentOS下部署运行NodeJs Web App
NodeJs Web App测试完成后,要怎么部署呢?介绍两个不错的方案 已知以下情景: 我要为 「kenniu」这个项目做配置 它的入口文件在 「/path/to/entry.js」 运行的User ...
- DOM事件探秘
说到DOM事件,就不得不说以下几点: 1 事件流 事件流:描述的是从页面中接受事件的顺序 事件流分为事件冒泡流和事件捕获流.那么什么是事件冒泡,什么是事件捕获呢? 事件冒泡:即事件最开始由最具体的元素 ...
- 从零开始,做一个NodeJS博客(四):服务器渲染页面与Pjax
标签: NodeJS 0 一个星期没更新了 = = 一直在忙着重构代码,以及解决重构后出现的各种bug 现在CSS也有一点了,是时候把遇到的各种坑盘点一下了 1 听歌排行 API 修复与重构 1.1 ...
- 手把手系列:实现Nat地址转换
1.实验目的: 掌握内网中的主机C1连接到Internet时,通过NAT实现私有全局地址转换. 2.实验拓扑: 3.实验步骤: 步骤一:给主机C1和C2配置IP地址.子网掩码和网关.如图: C1: ...
- 如何在启用SharePoint浏览器功能的InfoPath 表单中添加托管代码以动态地加载并显示图片
InfoPath 的浏览器表单不支持加载并显示图片,当然在模板中可以插入图片,但是如果想显示数据库的一幅图片,或是动态加载一张图片就无能为力了. 基实这个问题可以通过在浏览器表单中使用: " ...
- Understanding the Uncertain Geographic Context Problem
"The areal units (zonal objects) used in many geographical studies are arbitrary, modifiable, a ...
- 操作系统开发系列—13.i.进程调度 ●
上面的三个进程都是延迟相同的时间,让我们修改一下,尝试让它们延迟不同的时间. void TestA() { int i = 0; while (1) { disp_str("A." ...
- (转) 一步一步学习ASP.NET 5 (二)- 通过命令行和sublime创建项目
转发:微软MVP 卢建晖 的文章,希望对大家有帮助. 注:昨天转发之后很多朋友指出了vNext的命名问题,原文作者已经做出了修改,后面的标题都适用 asp.net 5这个名称. 编者语 : 昨天发了第 ...
- 在MVC中处理异常的总结
无论是桌面程序还是web程序,异常处理都是必须的. 一般的处理方式是, 捕获异常,然后记录异常的详细信息到文本文件或者数据库中.在Asp.net MVC中可以使用内建的filter——HandleEr ...
- 十五天精通WCF——终结篇 那些你需要注意的坑
终于一路走来,到了本系列的最后一篇了,这一篇也没什么好说的,整体知识框架已经在前面的系列文章中讲完了,wcf的配置众多,如果 不加一些指定配置,你可能会遇到一些灾难性的后果,快来一睹为快吧. 一: 第 ...