《Java与模式》学习笔记(3)——Factory Method

工厂方法(Factory Method)模式
 
工厂方法模式又叫虚拟构造子(Virtual Constructor)模式或多态性工厂(Polymorphic Factory)模式。
 
工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。
 
工厂方法模式的系统涉及到以下的角色:抽象工厂(Creator)角色、具体工厂角色(Concrete Creator)角色、抽象产品(Product)角色、具体产品(Concrete Product)角色。
 
结构图如下:(图是从其他地方找来的,所以跟示例代码不完全一样)
 
示例代码:
public   interface  Creator  {
    
public Product factory();
}

 
public   interface  Product  {}
 
public   class  ConcreteCreator1  implements  Creator  {
    
public Product facroty() {
        
return new ConcreteProduct1();
    }

}

 
public   class  ConcreteCreator2  implements  Creator  {
    
public Product facroty() {
        
return new ConcreteProduct2();
    }

}

 
public   class  ConcreteProduct1  implements  Product  {
    
public ConcreteProduct1() {
        
// do something
    }

}

 
public   class  ConcreteProduct2  implements  Product  {
    
public ConcreteProduct1() {
        
// do something
    }

}

 
public   class  Client  {
    
private static Creator creator1, creator2;
    
private static Product prod1, prod2;
    
public static void main(String[] args) {
        creator1 
= new ConcreteCreator1();
        prod1 
= creator1.factory();
        creator2 
= new ConcreteCreator2();
        prod2 
= creator2.factory();
    }

}
 
工厂方法模式是一个很常见的设计模式,可以在Java语言API的各个角落里面找到。比如java.util.Collection接口,这个接口规定所有的Java集合必须提供一个iterator()方法,返还一个Iterator类型的对象,这个iterator()方法就是一个工厂方法。同样的,List接口给出了两个工厂方法,一个是跟Collection一样的iterator()方法,另一个是listIterator()方法,返还一个ListIterator类型的对象。另外,在微软的COM技术架构中、Sun的EJB技术架构中和JMS技术中,都使用了工厂方法模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值