您的位置:首页 > 编程语言 > Java开发

java 设计模式学习笔记二 工厂模式Factory

2012-09-28 18:03 302 查看
工厂模式:factory

工厂模式就相当于创建实例对象的new,用于制造孩子的机器

创建对象的一般方法: Sample s=new Sample();

示例代码:

/**

* 2设计模式之工厂模式(factory)

*

* @time 下午05:10:37

* @author retacn yue

* @Email zhenhuayue@sina.com

*/

public class Factory {

//

public static Sample creator(int witch) {

if (1 == witch) {

return new SampleA();

} else if (2 == witch) {

return new SampleB();

}

return null;

}

}

/**

* 抽象工厂

*

* @time 下午05:24:39

* @author retacn yue

* @Email zhenhuayue@sina.com

*/

public abstract class Factory1 {

public abstract Sample creator();

public abstract Sample2 creator(String name);

}

public class SimpleFactory extends Factory1 {

@Override

public Sample creator() {

return new SampleA();

}

@Override

public Sample2 creator(String name) {

return new Sample2();

}

}

public class BombFactory extends Factory1 {

@Override

public Sample creator() {

return new Sample2A();

}

@Override

public Sample2 creator(String name) {

return new Sample2B();

}

}

public abstract class ForumFactory {

// 同步锁对象

private static Object initLock = new Object();

private static ForumFactory factory = null;

private static String className = "";

public static ForumFactory getInstance(Authorization authorization)

{

// 如果没授权f

if (null == authorization) {

return null;

}

// 使用单态模式

if (null == factory) {

synchronized (initLock) {

try {

// 动态转载类

Class clazz = Class.forName

(className);

factory = (ForumFactory)

clazz.newInstance();

} catch (ClassNotFoundException e) {

e.printStackTrace();

return null;

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

}

}

// 返回代理对象,用作权限控制

return null;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: