上一节的模版方法是在父类建立处理逻辑的大纲骨架,而在子类补充具体的处理内容,如果把这个Pattern应用在产生对象实例方面,就是本节的学习重点,工厂模式。
这个程序示例主要是建立一个生产身份证的工厂。
程序包 |
名称 |
说明 |
framework |
Product |
仅定义抽象方法use的抽象类 |
framework |
Factory |
实现方法create的抽象类 |
idcard |
IDCard |
实现方法use的抽象类 |
idcard |
IDCardFactory |
实现方法createProduct,egisterProduct的类 |
|
Main |
测试类 |
Product抽象类
- package framework;
- public abstract class Product {
- public abstract void use();
- }
- }
Factory 抽象类
- package framwork ;
- public abstract class Factory {
- public final Product create(String owner) {
- Product p = createProduct(owner);
- registerProduct(p);
- return p;
- }
- protected abstract Product createProduct(String owner);
- protected abstract void registerProduct(Product product);
- }
IDCard 子类
- package idcard;
- import framework.*;
- public class IDCard extends Product {
- private String owner;
- IDCard(String owner) {
- System.out.println("建立"+owner+"的卡。");
- this.owner = owner ;
- }
- public void use () {
- System.out.println("使用"+owner + " 的卡。");
- }
- public String getOwner() {
- return owner;
- }
- }
IDCardFactory 子类
- package idcard;
- import frameWork.*;
- import java.util.*;
- public class IDCardFactory extrends Factory {
- private Vector owners = new Vector();
- protected Product createrProduct (String owner) {
- return new IDCard(owner);
- }
- protected void registerProduct(Product product) {
- owners.add(((IDCard)product).getOwner());
- }
- public Vector getOwner() {
- return owners;
- }
- }
Main测试类
- import framwork.*;
- import idcard.*;
- public class Main {
- public static void main(String args[]) {
- Factory factory = new IDCardFactory();
- Product card1 = factory.create("qingzi2534");
- Product card2 = factory.create("javaeye");
- card1.use();
- card2.use();
- }
- }
分享到:
- 2007-01-17 13:21
- 浏览 1958
- 评论(1)
- 论坛回复 / 浏览 (1 / 2644)
- 查看更多
相关推荐
C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method)
C++设计模式课件8_Factory Method_工厂方法.pdf
设计模式C++学习之工厂方法模式(Factory Method)
Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)
C#面向对象设计模式纵横谈:Factory Method 工厂方法模式(创建型模式)
FACTORY METHOD(工厂方法)
NULL 博文链接:https://zhouhaitao.iteye.com/blog/1003702
NULL 博文链接:https://lym6520.iteye.com/blog/698013
C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) (Level 300)
2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一类。下面是使用...
C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) 视频教程,主讲人李建忠
设计模式 t02FactoryMethod
设计模式培训-factorymethod
Factory Method设计模式C#中的实现例子
它们都是由不同的厂家生产的,这就是工厂方法模式(FactoryMethod)与前面所说的简单工厂模式(SimpleFactory)的差别。 实例: 多文档系统。我已经用C#的源码编程了:请下载Factory Method Patter.rar
Factory Method 设计模式 工厂方法模式
FactoryMethod使一个类的实例化延迟到其子类;(2)、适用性:当一个类不知道它所必须创建的对象的类的时候;当一个类希望由它的子类来指定它所创建的对象的时候;当类将创建对象的职责委托给多个帮助子类中的某一个,...
C++设计模式代码资源8_Factory Method.zipC++设计模式代码资源8_Factory Method.zipC++设计模式代码资源8_Factory Method.zip
文章地址:https://blog.csdn.net/mazhiyuan1981/article/details/110196482