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;
}
}
工厂模式就相当于创建实例对象的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;
}
}
相关文章推荐
- java 设计模式学习笔记二 工厂模式Factory
- Java-马士兵设计模式学习笔记-工厂模式-用Jdom模拟Spring
- Java设计模式之工厂方法模式——学习笔记
- 设计模式学习笔记三:简单工厂(Simple Factory)
- Java-马士兵设计模式学习笔记-工厂模式-抽象工厂模式
- java 设计模式 学习笔记(1) - 简单工厂模式
- 看java设计模式感想②,学习工厂模式的笔记
- java 设计模式 学习笔记(四)工厂模式
- Java-马士兵设计模式学习笔记-工厂模式-模拟Spring读取Properties文件
- 设计模式学习笔记——工厂(Factory)模式
- java设计模式学习笔记--简单工厂模式
- 设计模式学习笔记:factory method(工厂方法)
- 【知了堂学习笔记】_Java中设计模式之工厂模式的学习
- Java-马士兵设计模式学习笔记-工厂模式-简单工厂
- 设计模式学习笔记--工厂(Factory)、建造(Builder)和原型(Prototype)
- 设计模式学习笔记四:工厂方法(Factory Method)
- 设计模式学习笔记三:简单工厂(Simple Factory)
- 【设计模式】学习笔记4:简单工厂模式(Simple Factory)
- JAVA学习笔记-----设计模式之工厂模式
- Java-马士兵设计模式学习笔记-工厂模式-单例及多例