java 设计模式学习笔记二 工厂模式Factory
来源:互联网 发布:婚庆域名 编辑:程序博客网 时间:2024/05/16 14:17
工厂模式: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设计模式(二):工厂模式(Factory)之简单工厂
- Java设计模式(二):工厂模式(Factory)之工厂方法
- [设计模式整理笔记 二] 简单工厂模式(Simple Factory)
- 学习设计模式之二:抽象工厂模式(Abstract Factory)
- [设计模式学习笔记二][创建型模式][工厂方法(Factory Method)]
- java设计模式学习笔记(二)--工厂方法模式
- 设计模式学习笔记(四)之工厂模式(Factory)
- 【设计模式】学习笔记5:工厂模式(Factory Method)
- 设计模式学习笔记——工厂(Factory)模式
- java设计模式学习 ----- 工厂方法模式(Factory Method)
- java设计模式学习 ----- 抽象工厂模式(Abstract Factory)
- Java设计模式二:抽象工厂模式(Abstract Factory)/工厂方法(Factory Method)
- 《Java与模式》学习笔记之二---工厂方法模式(Factory Method)
- 设计模式学习--工厂模式(Factory Pattern)
- 设计模式学习--工厂模式(Factory Pattern)
- 设计模式学习--工厂模式(Factory Pattern)
- Java设计模式:Factory(工厂模式)
- deadline_timer
- Android Context 详解
- ASP.NET中bin app_code app_data等文件夹的作用
- Redis测试分析(pipeline模式推荐)
- Java RunTime类
- java 设计模式学习笔记二 工厂模式Factory
- java中关于时间日期操作的常用函数
- 找工作
- Apriori算法中频繁项目集生成算法C语言实现
- Chromium MessageLoop类分析
- Ubuntu下 git 服务器的搭建
- Sql语句筛选出所有某【字段值重复】的记录!
- 使用数组时注意的一些问题
- Chrome的线程体系