1.单态模式
package demo;
public class LazySingleton {
private static LazySingleton instance=null;
private LazySingleton(){}
public static LazySingleton getInstance(){
if (instance==null){
instance=new LazySingleton();
System.out.println("**************");
}
return instance;
}
}
调用时,用单态类的静态方法去获得实例
package demo;
public class testMain {
public static void main(String[] args) {
LazySingleton my=LazySingleton.getInstance();
LazySingleton my2=LazySingleton.getInstance();
System.out.println(my==my2);//返回true
}
}
单态模式只能有一个实例
单态类必须自已创建自已唯一的实例
单态类必须给所有其他对象提供这一实例.
优点:不必反复去创建单态对象,浪费内存
缺点:没有考虑垃圾回收,不能应用于多线程
2工厂方法
工厂方法模式是由一个工厂对象决定创建出那一种产品的实例
先定义接口IFruit.java
package demo;
public interface IFruit {
public void eat();
}
不同的产品对接口的不同实现Orange.java
package demo;
public class Orange implements IFruit {
public void eat() {
System.out.println("eat orange");
}
}
apple实例去实现接口,Apple.java
package demo;
public class Apple implements IFruit{
public void eat() {
System.out.println("eat apple");
}
}
//建立工厂类,决定生产哪种产品(orange or applel)
package demo;
public class SimpleFactory {
public static IFruit createFruit(){
//return new Apple();
return new Orange();}
}
//client程序调用生产过程Client.java
package demo;
public class Client {
public static void main(String[] args) {
IFruit fruit=SimpleFactory.createFruit();//这里并不关心生产的是什么,由简单工厂类来决定产品
fruit.eat();
}
}
本文介绍了单例模式和工厂方法两种设计模式。单例模式确保一个类只有一个实例,并提供全局访问点;工厂方法模式定义了一个创建对象的接口,让子类决定实例化哪一个类。
1094

被折叠的 条评论
为什么被折叠?



