方法工厂模式属于创建型模式,很简单很实用,java.util.Collection.#iterator即运用了此模式。以下的代码是本人初学设计模式的简单理解,参考于java.util.Collection.#iterator
package design.methodFactory2;
/**
* @author 作者 E-mail: jqsl2012@163.com
* @version 创建时间:2012-1-27 下午10:11:49 <br>
*
*/
public class Test {
public static void main(String[] args) {
/*
* 工厂方法(Factory Method)模式
*
* Collection:定义一个接口,该接口负责创建指定的产品Iterator
* Iterator:产品
* AbstractList/AbstractLinkedList:工厂接口的子类,紧紧负责创建自身需要的产品
*
* 简单工厂模式譬如String.valueOf()等都是一个静态的方法负责创建各式各样的产品,方法中有各式各样的
* 逻辑判断,初看貌似简单工厂是一个万能工厂,其实它是违反了开-闭原则的(开-闭:对扩展开放,对修改关闭),
* 如果以后需要添加新的产品那么就必须修改简单工厂的静态方法,如果产品的数量比较小那还不要紧,如果产品的
* 数量很多而且带有复杂的业务逻辑那就麻烦了,所以简单工厂只适用于创建产品数量很少的情况。
*
* 工厂方法模式就完全符合开闭原则,新增加的产品无需修改原有的工厂。
* 工厂方法模式中的抽象工厂类只是一个契约,它定义了要生产的产品,所有的子级工厂类都必须实现该契约。
* java.util.Collection.#iterator即运用了方法工厂模式
*/
Collection c1 = new AbstractList();
Iterator it = c1.iterator();
Collection c2 = new AbstractLinkedList();
it = c2.iterator();
}
}
package design.methodFactory2;
/**
* @author 作者 E-mail: jqsl2012@163.com
* @version 创建时间:2012-1-27 下午10:12:27 <br>
*
*/
public interface Collection {
Iterator iterator();
}
package design.methodFactory2;
/**
* @author 作者 E-mail: jqsl2012@163.com
* @version 创建时间:2012-1-27 下午10:12:59 <br>
*
*/
public interface Iterator {
boolean hasNext();
Object next();
}
package design.methodFactory2;
/**
* @author 作者 E-mail: jqsl2012@163.com
* @version 创建时间:2012-1-27 下午10:15:11 <br>
*
*/
public class AbstractList implements Collection {
public Iterator iterator() {
System.out.println("AbstractList");
return new Itr();
}
private class Itr implements Iterator {
public boolean hasNext() {
return false;
}
public Object next() {
// TODO Auto-generated method stub
return null;
}
}
}
package design.methodFactory2;
/**
* @author 作者 E-mail: jqsl2012@163.com
* @version 创建时间:2012-1-27 下午10:21:54 <br>
*
*/
public class AbstractLinkedList implements Collection {
public Iterator iterator() {
System.out.println("AbstractLinkedList");
return new linkedlistItr();
}
private class linkedlistItr implements Iterator {
public boolean hasNext() {
// TODO Auto-generated method stub
return false;
}
public Object next() {
// TODO Auto-generated method stub
return null;
}
}
}
分享到:
相关推荐
工厂方法模式是面向对象设计模式中的行为型模式之一,它提供了一种...在提供的文件列表中,“FactoryMethod”可能是包含这个简单示例代码的文件。如果有机会查看这个文件,将能更深入地理解工厂方法模式的实现细节。
1. 抽象工厂(Abstract Factory):这是工厂方法模式的核心接口,它声明了一组用于创建产品的公共方法。抽象工厂通常为抽象类或接口。 2. 具体工厂(Concrete Factory):实现了抽象工厂接口,提供具体的产品实例。...
今天我们要探讨的是设计模式中的一个经典成员——工厂方法模式(Factory Method Pattern)。工厂方法模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。 ### 一、什么是工厂方法模式? 工厂方法模式...
《设计模式之——工厂方法(Factory Method)》 在软件工程中,设计模式是一种解决常见问题的可重用解决方案,它被广泛应用于构建高质量、可维护的代码。工厂方法是面向对象设计模式的一种,属于创建型模式。这个...
### Factory Method 工厂方法模式(创建型模式) #### 概述 在软件工程领域,设计模式是一种在特定上下文中解决常见问题的通用方案。Factory Method(工厂方法)模式是GoF(Gang of Four)设计模式之一,属于创建型...
在软件设计模式中,工厂方法(Factory Method)和抽象工厂(Abstract Factory)是两种非常重要的创建型模式。它们主要用于解决对象实例化的问题,提供了一种封装对象创建过程的方法,使得代码更加灵活,易于扩展和...
C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method)
Java设计模式是面向对象编程...在阅读《Chapter1___Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)》的相关资料时,你可以更深入地学习这些模式的细节,包括适用场景、优缺点以及如何在实际项目中实现。
Factory Method 工厂方法模式(创建型模式).wmv
设计模式C++学习之工厂方法模式(Factory Method)
工厂方法模式(Factory Method Pattern)是设计模式中的创建型模式之一,主要解决对象创建过程中的复杂性问题。在软件工程中,当一个类不知道它所必须创建的对象的类的时候,它就不会实例化对象,而是使用一个工厂...
C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) (Level 300)
工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定实例化哪一个具体类。这样,客户端代码就不需要知道具体的类是什么,只需通过工厂接口获取对象。 工厂...
工厂方法(Factory Method)是面向对象设计模式中的一个基础且广泛应用的模式,它属于创建型模式,主要目的是为了解耦对象的创建过程。本文将深入探讨工厂方法的设计理念、实现方式及其在实际开发中的应用。 ### ...
它们都是由不同的厂家生产的,这就是工厂方法模式(FactoryMethod)与前面所说的简单工厂模式(SimpleFactory)的差别。 实例: 多文档系统。我已经用C#的源码编程了:请下载Factory Method Patter.rar
C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) 视频教程,主讲人李建忠