----------- 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学习型技术博客、期待与您交流! ----------------------