ddf168913 2009-10-13 16:43 采纳率: 100%
浏览 110
已采纳

工厂模式困惑

工厂模式看了好久,有些困惑,各位给看看

目的只有一个:我想让一个工厂来管理我的DAO层对象和业务逻辑层manger对象创建

ItemDAO接口
[code="java"]
public interface ItemDAO {

/**
 * 添加物料
 * @param conn
 * @param item
 */
public void addItem(Connection conn, Item item);
。。。。

[/code]

ItemDAOImpl:
[code="java"]
public class ItemDAOImpl implements ItemDAO{

/**
 * 添加物料
 * @param conn
 * @param item
 */
public void addItem(Connection conn, Item item){}
。。。。

[/code]

ItemManager
[code="java"]
public interface ItemManager {

/**
 * 添加物料
 * @param item
 */
public void addItem(Item item);
/**

[/code]

ItemManagerImpl:

code="java"]
public class ItemManagerImpl implements ItemManager{

/**
 * 添加物料
 * @param item
 */
public void addItem(Item item){
       .......
      }

/**

[/code]

ItemAbstractFactory:
[code="java"]
public interface ItemAbstractFactory {

public ItemDao createItemDAO(Class classes);

public ItemManager createItemManager(Class classes);

}
[/code]

ItemAbstractFactoryImpl:
[code="java"]
public class ItemAbstractFactoryImpl implements ItemAbstractFactory{

public ItemDao createItemDAO(Class classes){
            ItemDao itemDAO = null;

        itemDAO = (ItemDao)Class.forName(classes.getName()).newInstance();
              return itemDAO;
      }

public ItemManager createItemManager(Class classes){
          ItemManager itemManager = null;

            itemManager = (ItemManager)Class.forName(classes.getName()).newInstance();
            return itemManager;
      }

}
[/code]

我上面的实现是抽象工厂的实现吗?他能够实现多系列产品的创建,看了设计模式书里讲的头都晕了,似乎明白了
用的时候还是糊涂

另外上面这个用简单工厂也能达到目的啊

ItemDAO ItemDAOImpl
ItemManger ItemMangerImpl一样,不写了

StaticFactory:
[code="java"]
public class StaticFactory{

private StaticFactory factory = new StaticFactory();

private StaticFactory(){};

public StaticFactory getInstance(){}

public ItemDAO createItemDAO(Class classes){
    return (ItemDAOImpl)Class.forName(classes).newInstance();
}

public ItemManager createItemManager(Class classes){
    return (ItemManagerImpl)Class.forName(classes).newInstance();
}

}
[/code]

这样好像也能达到目的,就少了个工厂接口而已

是不是上面两个都是简单工厂啊

  • 写回答

2条回答 默认 最新

  • CaiHuajiang 2009-10-13 16:49
    关注

    [quote]这样好像也能达到目的,就少了个工厂接口而已 [/quote]

    就是这一个工厂接口决定了该工厂是可以抽象的呀。
    比方,简单工厂设计了鞋厂,可以用来生产鞋,那么需求如果要求一个服装厂怎么办,抽象工厂可以对鞋厂与服装厂做个抽象,先定义出各个类型的厂再生产产品,这是抽象工厂。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?