读书笔记-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的著作是针对建筑领域的,但是他的观点实际上用用于所有的工程设计领域,其中也包括软件设计 ...
随机推荐
- legend---三、方法集思路
legend---三.方法集思路 一.总结 一句话总结:其实也就是工具包思路,会极大的简化编程,清晰逻辑 1.多if转换成简洁单if怎么实现? 下面这段代码是错的,if的这种写法只适合直接return ...
- js实现导出数据到excel
来自:http://www.imooc.com/article/13374 //html代码<!DOCTYPE HTML> <html> <head> <ti ...
- 实现人脸识别性别之路---open CV将图片显示出来
import cv2filename='E:\\tensorflow\\bu.jpg'#图片的地址 # face_cascade=cv2.CascadeClassifier('C:\\anconda3 ...
- BZOJ4320 homework
Description:给定\(n\)个操作,向集合中加入一个数(保证每个数不同)或者查询集合内\(\text{%Y}\)的最小值 Solution:对于小于\(\sqrt{300000}\)的直接暴 ...
- Python学习第一篇
好久没有来博客园了,今天开始写自己学习Python和Hadoop的学习笔记吧.今天写第一篇,Python学习,其他的环境部署都不说了,可以参考其他的博客. 今天根据MachineLearning里面的 ...
- web安全:防范点击劫持的两种方式
防范点击劫持的两种方式 什么点击劫持?最常见的是恶意网站使用 <iframe> 标签把我方的一些含有重要信息类如交易的网页嵌入进去,然后把 iframe 设置透明,用定位的手段的把一些引诱 ...
- HDU——T 1251 统计难题
http://acm.hdu.edu.cn/showproblem.php?pid=1251 Time Limit: 4000/2000 MS (Java/Others) Memory Limi ...
- AVEVA PDMS to 3ds Max - RvmTranslator6.0beta
AVEVA PDMS to 3ds Max - RvmTranslator6.0beta eryar@163.com RvmTranslato6.0 translate PDMS RVM to 3ds ...
- ThinkPHP5如何修改默认跳转成功和失败页面
ThinkPHP5如何修改默认跳转成功和失败页面 一.总结 一句话总结:直接修改默认跳转页面对应的模板文件的路径:'dispatch_success_tmpl' => APP_PATH . 'i ...
- js中常用的对象—Math的属性和方法
js中有一个内置对象——Math对象,在有的时候非常有用,我们来分析一下: Math常用属性(注意要大写): E 返回算术常量 e,即自然对数的底数(约等于2.718)LN2 返回 2 的自然对数(约 ...