黑马程序员_day08_面向对象设计模式以及技术文档

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值