读书笔记-Java设计模式
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!
Java的封装性很好,拿访问控制符来讲,没有权限的类或方法是不能访问的。如public,都可访问;private,只有本类中方法可访问;protected位于两者之间,位于本包中对象可访问。
组合和继承都允许在新的类中放置子对象,组合是显式的,继承是隐示的。final的含义:常量数值则永不改变,对象引用则引用永不改变,但Java未提供任何对象永不改变的方法。所有private方法都隐式的指定为final,但覆盖只有非private的才行。
多态,分离做什么和怎么做,是数据抽象和继承后的第三种基本特征,消除类型之间的耦合关系。如工人和农民都要吃饭,干活则是不同的,并且可以添加新的功能。组合与继承,首选组合,因为它更加灵活,可以动态选择行为;
接口和内部类为我们提供一种将接口与实现分享的更加结构化的方法。抽象类是希望通过这个通用接口操纵一系列类,包括抽象方法的类就叫抽象类。接口允许创建者确定方法名、参数列表和返回类型,接口的域隐式的是static和final的。接口相当于多继承,可以有多个实现;而内部类可以协助当前类进行多继承。
内部类,将一个类的定义放在另一个类的内部定义,它拥有对外部类所有元素的访问权,创建不依赖于外部类。当然如果不需要,则可以将内部类声明为static,命名嵌套类,则它不产生默认指向创建它的外围类。内部类的好处之一是,可以协助外部类实现多继承,哈哈!同时接口也可以有内部类的,自动public和static。内部类不可以被覆盖,局部内部类不能有访问控件符。
在使用组合的过程中,要尽量避免方法名相同
代理:在类中添加一个成员对象,同时在新类中暴露该成员对象的所有方法。同组合模式
向上转型:从一个较专用类型向较通用类型转换。
适配器:接受你所拥有的接口,并产生你想要的接口,例:正序和反序输出。
策略:执行某操作的方法,接受一个你指定的接口。声明:你可以用任何你想要的对象来调用我的方法,只要你遵循我的接口。意思就是你实现我的接口,不管你是什么类,都可以来执行这个方法。
工厂:不同类调用同一接口返回不同结果。如public interface Factory<T>{};
装饰器:使用分层对象来动态透明地向单个对象中添加责任,最初周围对象都具有相同的基本接口,即拥有一个可以向对象发送的公共消息集。
动态代理:每个混入的类都必须是某个接口的实现。
读书笔记-Java设计模式的更多相关文章
- 《深入了解java虚拟机》高效并发读书笔记——Java内存模型,线程,线程安全 与锁优化
<深入了解java虚拟机>高效并发读书笔记--Java内存模型,线程,线程安全 与锁优化 本文主要参考<深入了解java虚拟机>高效并发章节 关于锁升级,偏向锁,轻量级锁参考& ...
- 读书笔记:js设计模式
面向过程编程,面向对象编程和函数式编程> 定义一个类方法1:function Anim(){ } Anim.prototype.start = function(){ .. };Anim.pro ...
- [读书笔记]java核心技术
ps:有时间好好整理下格式.从别的编辑器拷贝过来啥都没了. ~~~~~~~~~~~~~~· 2.java程序设计环境 JDK 开发java使用的软件: JRE 运行java使用的软件: SE 用于桌面 ...
- [读书笔记]java中的volatile关键词
以下内容大多来自周志明的<深入理解Java虚拟机>. 当一个变量被volatile修饰后,它将具备两种特性: 1. 保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变 ...
- [读书笔记]Java之动态分派
以下内容来自周志明的<深入理解Java虚拟机>. 前一篇说了静态分派和重载有关,现在的动态分派就和覆盖Override有关了. 先看代码: public class DynamicDisp ...
- [读书笔记]Java之静态分派
以下内容来自周志明的<深入理解Java虚拟机>. 静态分派和重载有关. 先看代码: public static void main(String[] args) { SuperClass ...
- [读书笔记]java中的类加载器
以下内容大多来自周志明的<深入理解Java虚拟机>. 类加载器是java的一项创新,也是java流行的重要原因之一,它最初是为了满足java applet的需求而开发出来. 什么是appl ...
- [读书笔记] java类初始化
以下内容来自周志明的<深入理解java虚拟机>: 类初始化阶段是类加载过程的最后一步,前面的类加载过程中,除了在加载阶段用户应用程序可以通过自定义类加载器参与之外,其余动作完全由虚拟机主导 ...
- [置顶] 我的设计模式学习笔记------>Java设计模式总概况
设计模式的概念最早起源于建筑设计大师Alexander的<建筑的永恒方法>一书,尽管Alexander的著作是针对建筑领域的,但是他的观点实际上用用于所有的工程设计领域,其中也包括软件设计 ...
随机推荐
- sass02
新建一个文件夹 1 cd 进入文件夹 ,cd E:\360data\重要数据\桌面\sass, 2 compass creat hello:当前目录创建sass工程, 3 sass文件夹放置sass文 ...
- 2015北京网络赛 J Scores bitset+分块
2015北京网络赛 J Scores 题意:50000组5维数据,50000个询问,问有多少组每一维都不大于询问的数据 思路:赛时没有思路,后来看解题报告也因为智商太低看了半天看不懂.bitset之前 ...
- Web 端 js 导出csv文件
http://www.qdfuns.com/notes/35821/2ab249182734d1f5c66da6b5cf395db9.html
- linux下支持托盘的邮件客户端Sylpheed
在网上搜索了很多客户端想支持系统托盘,发现一个很不错的邮件客户端Sylpheed.设置方式和foxmail很像,最为重要的是支持系统托盘,很方便,默认没有开启,简单设置下:配置->通用首选项-& ...
- sublime text 2 licence
----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 6C0EEB94 BC ...
- snmpd修改端口
http://blog.csdn.net/cau99/article/details/5077239 http://blog.csdn.net/gua___gua/article/details/48 ...
- ecshop微信通中微信自动登录的设置方法
ecshop微信通中微信自动登录的设置方法 来 源:共享世纪 作 者:网络 时间:2015-12-03 点击: 4017 注意:微信自动登录,必须同时满足两个条件: 第一.微信公众号必须是服务号经过认 ...
- P2186 小Z的栈函数
P2186 小Z的栈函数 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: NUM X:栈顶放入X. POP:抛弃栈顶元素. INV:将栈顶 ...
- 【Linux环境编程】获取网卡的实时网速
在windows以下.我们能够看到360或者是qq安全卫士的"安全球".上面显示实时的网速情况.那么在linux里面怎样获取网卡的实时网速?事实上原理非常easy,读取须要获取网速 ...
- Junit4.x高级使用方法具体解释(一)
近期整理代码的时候,总习惯把一些经常使用的工具类和方法等都写在junit中,这样能够方便于在想用的时候直接copy,在用junit的时候学到了一些比較实用的东西.记录例如以下: 1.使用junit进行 ...