读书笔记-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的著作是针对建筑领域的,但是他的观点实际上用用于所有的工程设计领域,其中也包括软件设计 ...
随机推荐
- PHP 保留两位小数,且不四舍五入
$value = '555.09988'; floor($value*100)/100;
- Vsftp权限控制(持续增加中)
把用户限制在自己的home目录中,例如限制用户Leon只能访问/home/Leon目录下的文件,不允许访问上级目录. 先打开配置文件 vi /etc/vsftpd/vsftpd.conf 第一种方法: ...
- 101.C++继承三种权限
三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承特点 1.public继承不改变基类成员的访问权限 ...
- BZOJ 3629 约数和定理+搜索
呃呃 看到了这道题 没有任何思路-- 百度了一发题解 说要用约数和定理 就查了一发 http://baike.so.com/doc/7207502-7432191.html (不会的可以先学习一下) ...
- Gym - 100625D Destination Unknown 最短路
http://codeforces.com/gym/100625/attachments/download/3213/2013-benelux-algorithm-programming-contes ...
- PullToRefreshListView中嵌套ViewPager滑动冲突的解决
PullToRefreshListView中嵌套ViewPager滑动冲突的解决 最近恰好遇到PullToRefreshListView中需要嵌套ViewPager的情况,ViewPager 作为头部 ...
- 【转载】jQuery弹出层始终垂直居中于当前屏幕
一般网站上肯定有一些弹出框,不论弹出框的大小,都需要他在当前窗口垂直居中.之前手上就有一个jQuery的例子,后来才发现,他只能在第一屏垂直居中,如果滑动滚动条,弹出的框就在上方,不是很方便.请教朋友 ...
- node.js状态码
100——客户必须继续发出请求101——客户要求服务器根据请求转换HTTP协议版本200——交易成功201——提示知道新文件的URL202——接受和处理.但处理未完成203——返回信息不确定或不完整2 ...
- windows下plsql 设置 里面timestamp显示的格式
http://blog.csdn.net/cwjcsu/article/details/9216981
- ORACLE遞歸查詢
ORACLE支持常規的用CTE遞歸的方式實現遞歸查詢,也有自己特有的查詢方式,ORACLE文檔中叫層次數據查詢. 這裏通過一個簡單的样例來介紹這兩種查詢方式. 數據準備: CREATE TABLE T ...