Design Pattern_Factory Method(工厂模式)
2013-04-30 20:42
323 查看
Factory Method 意图:定义 一个用于创建对象的接口,让子类决定实例化那一个类。将实例化延迟到其子类 问题:一个类需要实例化另一个类的派生类,但不知道具体的是哪个派生类。Factory Method允许让派生类来做出决定。 解决意图:一个派生类对“实例话那个类,如何实例化”的问题做出决定。 参与者与协作者:Product是Factory Method模式创建的对象的类型接口。Creator是定义工厂方法的接口。 效果:客户将需要Creator的子类来创建一个特定的ConcreteProduct对象。 实现:在抽象类中使用一个抽象方法(C++中的纯虚函数)。抽象类的代码把这个方法延迟到需要实例化一个被包含对象的时候,抽象类不知道需要哪个特定对象。
这个类图中有一个abstract的Creator类,更像一个抽象工厂,如果有多个Factory,各个factory生产方式不同的话是有必要有个abstract factory的,一般情况下直接用一个factory就行了、
举个例子
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package factory; /** * * @author blacklaw */ public class Factory { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here MammalFactory.create(MammalFactory.MAMMAL.CAT).bark(); MammalFactory.create(MammalFactory.MAMMAL.DOG).bark(); } /** * Factory */ static class MammalFactory{ //selector static public enum MAMMAL{ CAT, DOG, } static public Mammal create(MAMMAL M){ switch(M){ case CAT: return new Cat(); case DOG: return new Dog(); } return new Dog(); } } //base Mammal abstract class Mammal{ abstract void bark(); } //DOG static class Dog extends Mammal{ @Override void bark() { System.out.println("Wang Wang"); } } //CAT static class Cat extends Mammal{ @Override void bark() { System.out.println("Miao Miao"); } } }
相关文章推荐
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 工厂模式(FactoryMethod) - Java实现
- 设计模式之3 - 工厂方法Factory Method
- Java设计模式圣经连载(02)-工厂方法(Factory Method)模式
- 设计模式之简单工厂(Factory method)
- 设计模式之工厂方法(factory method)
- 设计模式示例一 Factory Method(工厂方法)
- 工厂方法(Factory Method)模式
- java与模式 工厂方法(factory method)
- (第Ⅱ部分 创建型模式篇) 第4章 工厂方法(Factory Method)
- 工厂模式(Factory Method)
- 创建模式之二:工厂方法(Factory Method)
- 工厂方法(Factory Method)模式
- 设计模式--工厂方法(FactoryMethod)
- 设计模式笔记-创建型模式之三--工厂方法:Factory Method
- 学习笔记系列之NET设计模式(3):工厂方法(Factory Method)
- 对数据库数据操作,工厂方法设计模式(Factory Method)
- Factory Method 工厂方法(创建模式) 笔记
- 跟着Android学设计模式:工厂方法(Factory method)
- 23设计模式之工厂方法(FactoryMethod)
- 面向对象:工厂方法(Factory Method)模式