Object Factory

原创 2007年09月18日 18:40:00

可以定义基类create方法,但是具体的生成方法由子类去实现。也可以以一个特征值产生对象。这是Object Factory可以做的事情。

 从生成对象的角度来说,生成一个特定的对象只要知道特定的一个类就可以了,虚函数可以给我们这个便利。

但是通过一个特征值生成对象,首先要解决的问题是生成方法要知道所有可以生成的类、极端情况下,后期添加类是极有可能的。这里有两点,第一,我们不想使用switch,第二,我们不想文件关联过多。

Loki使用了map替代了switch的选择,因为map可以动态更改,Loki存放生成函数指针,这避免了文件的依赖。这样,Kit的泛化需要以下policy类型、标志符和生成器。健全的工厂出错处理是必不可少的,所以有必要添加出错处理方法,这样Kit成了如下这样:

template
<    class    AbstractProduct,
    typename    IdentifierType,
    typename    ProductCreator,
    template    
<typename,class>    class FactoryErrorPolicy
>
class    Factory    :public    FactoryErrorPolicy<IdentifierType,AbstractProduct>;

可以使用出错处理类中的方法依照类型信息做相应处理。

对于克隆工厂而言,所有类必须继承基类克隆方法是必须的,另外,在生产对象的时候,克隆的本体也是必须的,因而,在默认克隆方法的前提下,我们只需要一个克隆本体就可以了,克隆工厂可以如此:

template
<    class    AbstractProduct,
    typename    ProductCreator
        
= AbstractProduct* (*)(const AbstractProduct*),
    template    
<typename,class>    class FactoryErrorPolicy
>
class    CloneFactory;

仅仅表现方式不一样,思想完全一样。

当然,我隐藏了底层的注册、解除注册方法。

Object Factory就是这样一个东西。

spring版本引起的问题

今天在做项目的时候,加入了aspectj,然后就在平稳运行了很久的项目上报错了,我去,先上错误日志Caused by: java.lang.NoSuchMethodError: org.springf...
  • oryjk
  • oryjk
  • 2016年05月14日 20:57
  • 2097

java与oracle type间传递数据

写一点东西,以便以后查看,省的忘记了。 1.建一个oracle  type ,对应java的类 create or replace type QUERYVO as object{ id varchar...
  • oShuSheng1
  • oShuSheng1
  • 2013年10月20日 11:15
  • 801

AngularJs使用factory创建自定义服务

为什么要创建自定义服务? 很简单,不想让控制器显得过于“臃肿”,而且服务可复用。针对性强,每个服务对应不同的功能。 这里介绍如何使用factory创建自定义服务,并且使用他。 例子1: ...
  • oak160
  • oak160
  • 2016年11月18日 19:57
  • 2089

setup factory打包工具的使用

setup factory 优点:支持大于2G的安装包打包(Inno Setup,NSIS不支持)。 缺点:原来的界面控件不能在基础上修改,只能自定义custom的对话框,但是脚本都需要自己编写,比较...
  • Blues1021
  • Blues1021
  • 2015年03月10日 23:32
  • 2876

我看到的最好的解释AngularJs中Factory和Service和Provide不同

AngularJS: Factory vs Service vs Provider By Tyler  On May 4, 2014  With 44 Comments  In...
  • lglgsy456
  • lglgsy456
  • 2014年07月04日 17:45
  • 31934

java中factory创建对象的好处

这里先不具体分析工厂模式的详细内容而是讨论为什么要在应用开发的过程中设计工厂这样一个部分; 工厂模式的详细内容十分广泛种类众多请参考更多设计模式的书籍; 在面向对象编程中, 最通常的方法是一个new操...
  • GuardOfSea
  • GuardOfSea
  • 2016年02月22日 10:50
  • 1124

设计模式学习--工厂模式(Factory Pattern)

设计模式学习--工厂模式(Factory Pattern) 2013年5月30日 设计模式学习记录 什么是工厂模式? 工厂模式可分为以下三种类型,需要根据不同需求来决定使用哪一种...
  • wwj_748
  • wwj_748
  • 2013年05月30日 13:28
  • 5791

JAVA设计模式之 简单工厂模式【Simple Factory Pattern】

一、概述 er、适用场景
  • l416112167
  • l416112167
  • 2014年10月18日 21:48
  • 2584

打包软件——Setup factory 7.0使用介绍

基础功能介绍: 参考:http://blog.csdn.net/liujiahan629629/article/details/7462443 其他功能 1. 制作桌面快捷方式 选择文件 ->...
  • wind_hzx
  • wind_hzx
  • 2014年03月15日 15:09
  • 1552

深入浅出设计模式 ------ Abstract Factory(抽象工厂)

本文可以和笔者的深入浅出设计模式 ------ Factory Method(工厂方法)参照着看, 可以区分这三个工厂模式的不同。...
  • wenniuwuren
  • wenniuwuren
  • 2015年01月29日 02:25
  • 1669
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Object Factory
举报原因:
原因补充:

(最多只允许输入30个字)