文章列表
Singleton模式的宗旨在于确保某个类只有一个实例, 并且为之提供一个全局访问点.
单例模式的应用场景:
1.在资源管理方面的经常使用单例模式
比如打印机的 Printer Spooler 是单例模式,这样可以避免两个作业同时输出到打印机.
2.从系统性能方面考虑使用单例模式
实例的创建是需要消耗系统资源的,而且是费时的,重复的对象最后还需要垃圾回收器回收,更是加重了系统的负担.
如何实现单例模式
在设计单例模式的时候,首先要确定何时实例化该类的实例。第一种选择是将该单例对象作为单例类的一个静态域实例化。示例如 ...
工厂模式是:定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类。
它有个特点,就是通常工厂的类层次与产品的类层次几乎是一样的树。如果说工厂是你的影子,你就是产品了。在你平时未用到模式的时候,你需要什么就new一个,这种情况就好比你躺在地上,人影合一了。那什么时候需要工厂模式呢。看看定义:“使一个类的实例化延迟到子类”,这个是关键,当你有必要延迟实例化的时候才需要用工厂模式。那什么情况下要延迟呢,在单例模式中有惰性单例(就是单例那个静态属性)……等等,就是一开始你还不适合立刻就创建该对象,你还需要一些资源或其它准备工作。整个系统的运行不像单个程序那样,系统需要很多资 ...
//动物类接口
interface Animal{
//发出声音
public class sayHello(){};
}
//生产动物的工厂类
class AnimalFactory{
public static Animal createDog(){
return (Animal)new Dog();
}
}
//狗实现动物接口
class Dog i ...
看下面这段程序:
class Father{
public void func1(){
func2();
}
//这是父类中的func2()方法,因为下面的子类中重写了该方法
//所以在父类类型的引用中调用时,这个方法将不再有效
//取而代之的是将调用子类中重写的func2()方法
public void func2(){
System.out.println("AAA");
}
}
class Child extends Fath ...
在这个例子中,我们循环申请Object对象,并将所申请的对象放入一个Vector中,如果我们仅仅释放引用本身,那么Vector仍然引用该对象,所以这个对象对GC来说是不可回收的。因此,如果对象加入到Vector后,还必须从Vector中删除,最简单的方法就是将Vector对象设置为null。
Vector v=new Vector(10);
for (int i=1;i<100; i++)
{
Object o=new Object();
v.add(o);
o=null;
}
//此时,所有的Object对象都没有被释放,因为变量v引用这些对象。