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条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)