黑马程序员_day08_面向对象设计模式以及技术文档
来源:互联网 发布:mac重装系统 编辑:程序博客网 时间:2024/06/06 03:25
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
面向对象(设计模式)
设计模式:解决问题的一种行之有效的思想。
一种(优秀)思想不断进行复用,有23种设计模式
单例设计模式
单例中的例可以理解为实例,单个对象。保证了一个类在内存中只能有一个对象。
比如多程序访问同一个配置文件,希望多程序操作的都是同一个配置文件中的数据。就需要保证该配置文件的唯一性。
思路:1、怎样做才能保证该对象的唯一性。其他程序都可随时用new来创建该类对象,这样无法控制个数。不让其他程序能创建该类对象。
2、不让其他程序创建,该类在本类中自己创建一个对象。
3、该类将创建的对象对外提供公共方法,让其他程序获取并使用。
步骤1、将该类中构造函数私有化
2、在本类中创建一个本类对象
3、定义一个方法,返回值类型是本类类型,让其他程序通过该方法可以获取本类对象。
class SingleDemo
{
public static void main(String[] args)
{
Single s1=Single.getInstance();
Single s2=Single.getInstance();
System.out.println(s1==s2);//结果为true说明调用的是同一对象
}
}
class Single
{
private Single(){}私有化构造函数,其他程序无法创建该类对象
private static Single s=new Single();
public static Single getInstance()
{
return s;
}
}
误区1:将private static Single s=new Single();中private 去掉,后面的getInstance()方法去掉,结果同样为true。但是一般不会这样写。因为将对象私有化,定义方法使得对象可控,就避免了对对象的直接访问获取,比如达到一定的条件,才能获得对象。
public static Single getInstance(int num)
{
if (num<0)
{
return null;
else
return s;
}
}使得对象可控。
单例的延迟加载方式(懒汉式)什么时候用才什么时候开辟对象空间
class Single2
{
private static Single2 s=null;
private Single2(){}
public static Single2 getInstance()
{
if (s==null)
{
s=new Single2();
return s;
}这里只有当getInstance()被调用时才会new Single2();
}开发时这种方式并不常用,因为在多线程下,懒汉式存在着严重的安全隐患。
}
饿汉式 不管用不用,都开辟出对象空间
class Single
{
private Single(){}
private static Single s=new Single();
public static Single getInstance()
{
return s;
}
}
编译原理
当编译一个类的.java 文件时,会对文件进行语法检查,当检查到其他类,会在指定的classpath路径下去找该类.class文件是否存在,如果没有配置classpath就会在当前路径下找该类.class文件,找到了则继续语法检查,如果没有,编译器还会在当前路径下再找一次是否有与该类同名的.java文件。如果原文件存在,则先编译出该类的.class文件,然后继续语法检查。
如果一个类(工具类)中,没有任何成员变量,而且成员函数(方法)没有访问过任何特有数据,成员函数都是静态的,则将私有化其构造函数,使的其他程序调用时只能通过类名直接调用,而无需也不能通过创建该类对象对其进行调用。
技术文档
/**
对工具类进行功能描述如
(这是一个用于操作数组的工具类)
@ author 张三
@ version v2.0
*/
public class Tool
{
/**
这是一个构造函数,用于给对象初始化
*/
private Tool(){}
/**
用于获取数组的最大值
@ param arr 接受一个int类型的数组
@ return 返回该数组中的最大值
*/
public static int getMax(int[] arr)
{
code-----;
}
/**
类似上------
*/
public static int getMin(int[] arr)
{
code----;
}
}
注意类名前若没有足够大的权限修饰,会编译出错:找不到可以文档化的公共或受保护的类。同样类中的方法和类一样,没有public修饰是不会显示出的。
所以上述代码中的构造函数因为被私有化是不会被技术文档所显示。
Javadoc.exe是对源文件进行编译,生成源文件的说明书。
-d 输出文件的目标目录。
-d.是在当前 目录下输出文件
-d mine 若当前目录下没有mine目录,会自动创建mine目录并在其中生成技术文档。
Index.html索引界面
以后在注释的时候,如果函数前修饰符是public就加文档注释。
Api:application program interface 应用程序接口 帮助文档。
已有类文件和帮助文档的结合使用。
在开发中 通常不会将已有类文件复制或剪贴至所正在编译类文件目录下,通常会set classpath 来完成。set classpath=已有类文件的路径,然后Set classpath=.;%classpath%就表示classpath中既有当前路径也有已有类文件的路径。
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
- 黑马程序员_day08_面向对象设计模式以及技术文档
- 黑马程序员——>第六天<面向对象(静态-帮助文档-单例设计模式)>
- 黑马程序员----面向对象2(主函数、工具类、文档注释、单例设计模式)
- 黑马程序员--面向对象设计
- 黑马程序员-面向对象之单例设计模式
- 黑马程序员---------Java基础-面向对象、设计模式
- 黑马程序员 面向对象 单例设计模式
- 黑马程序员---Java面向对象(单例设计模式)
- 黑马程序员—Java面向对象(单例设计模式、面向对象的继承、final关键字)
- 黑马程序员--java技术--面向对象
- 黑马程序员--面向对象的设计思想
- 黑马程序员:面向对象设计练习
- 黑马程序员-面向对象的设计原则
- 面向对象来做一个迷宫游戏(努深刻学习面向对象技术以及面向对象的设计模式)
- 黑马程序员--面向对象模板方法模式
- 黑马程序员——面向对象06(static、对象初始化、单例设计模式)
- 黑马程序员—— 4,二维数组,面向对象,制作帮助文档,静态代码块,构造代码块,构造函数,单例设计模式
- 黑马程序员---【OC语言】02面向过程以及面向对象
- C# linq 分组 排序 把数据放到一个对象中
- UNIX Commands Used to Debug
- 用java oop编写一个控制台输出的计算机
- 如何给父子ID结构的数据,动态生成layerorder
- new/delete和malloc/free的区别?
- 黑马程序员_day08_面向对象设计模式以及技术文档
- Android NDK r8 开发环境搭建
- 题目1199:找位置
- Android驱动入门系列(一)
- Android中ICS4.0源码Launcher启动流程分析【android源码Launcher系列一】
- C#程序实现动态调用DLL的研究
- android.intent.category.DEFAULT的目的是什么?
- image sensor 积分时间
- android 小知识总结