设计模式 [ 工厂模式 ]
来源:互联网 发布:英白罗 知乎 编辑:程序博客网 时间:2024/04/29 18:26
工厂模式
SUN_DEMON (sudemon@163.com), 软件工程师, www.egemmer.cn, www.gemsuit.cn
2007 年 11 月 14 日
工厂模式是非常基本的设计模式. 在真实的系统中, 产品可以形成复杂的等级结构, 多个不同名称产品可以是
共同类型的, 本文使用简单的编程实例来说明工厂模式做为生产者, 生产相同类型不同名称的产品.
本文的实例使用 Java 语言编写.
工厂模式的几种形态
- 简单工厂(Simple Factory)模式
- 工厂方法(Factory Method)模式
- 抽象工厂(Abstract Factory)模式
简单工厂模式
比如说有一个公司, 专门向市场生产服装. 服装公司有两种服装:
- 衣服
- 裤子
服装与其他的商品有很大的不同, 服装是可以穿戴的. 那么可以建立一个各种服装都适用的接口, 以便与其他商品
区分开.
清单1 表示服装的接口.
public interface Costume ...{
public void devise(); // 设计
public void produce(); // 生产
public void pack(); // 包装
}
public void devise(); // 设计
public void produce(); // 生产
public void pack(); // 包装
}
衣服是服装的一种, 所以他实现了服装的所有方法.
清单2 表示衣服的类
public class Garment implements Costume ...{
public void design() ...{
System.out.println("设计衣服");
}
public void produce() ...{
System.out.println("生产衣服");
}
public void pack() ...{
System.out.println("包装衣服");
}
}
public void design() ...{
System.out.println("设计衣服");
}
public void produce() ...{
System.out.println("生产衣服");
}
public void pack() ...{
System.out.println("包装衣服");
}
}
裤子也是服装的一种, 所以也实现了服装的所有方法.
清单2 表示裤子的类
public class Breeches implements Costume ...{
public void design() ...{
System.out.println("设计裤子");
}
public void produce() ...{
System.out.println("生产裤子");
}
public void pack() ...{
System.out.println("包装裤子");
}
}
public void design() ...{
System.out.println("设计裤子");
}
public void produce() ...{
System.out.println("生产裤子");
}
public void pack() ...{
System.out.println("包装裤子");
}
}
公司的工作人员也是系统的一部分. 工作人员可以根据客户的需求, 创建不同的服装对象.
清单3 表示工作人员的类
public class Employee ...{
public static Costume get(String costumeName)
throws Exception...{
if( costumeName.equalsIgnoreCase("garment") )
return new Garment();
if( costumeName.equalsIgnoreCase("breeches") )
return new Breeches();
throw new Exception("产品名称错误, 必须是: garment, breeches");
}
}
public static Costume get(String costumeName)
throws Exception...{
if( costumeName.equalsIgnoreCase("garment") )
return new Garment();
if( costumeName.equalsIgnoreCase("breeches") )
return new Breeches();
throw new Exception("产品名称错误, 必须是: garment, breeches");
}
}
方法工厂模式
未完, 正在写做.
- 设计模式------工厂模式
- 设计模式------工厂模式
- 设计模式 [ 工厂模式 ]
- 设计模式--工厂模式
- 设计模式-工厂模式
- 设计模式--工厂模式
- 设计模式 工厂模式
- 设计模式-工厂模式
- 设计模式 -- 工厂模式
- 设计模式-工厂模式
- 设计模式----工厂模式
- 设计模式---工厂模式
- 设计模式-工厂模式
- 设计模式--工厂模式
- 设计模式---工厂模式
- 设计模式-工厂模式
- 设计模式--工厂模式
- 设计模式 - 工厂模式
- 用组播和定时器实现同步选举(练习)
- 基于分布式对象的网游程序结构设计(3) - 分布式组件模型DCOM/COBRA
- 心有千千结(四)
- XMLHttpRequest对象
- 名师李涛老师主讲 Photoshop CS2 (全教程下载)
- 设计模式 [ 工厂模式 ]
- 心有千千结(五)
- 设计模式之——build
- 心有千千结(六)
- 学了Java就一定要使用Java进行软件开发吗?
- 心有千千结(七)
- Zend Studio以及开发框架(引擎)使用上的个人总结(无参考价值、个人备忘)
- C#中的一些技巧
- XOOPS - 模块 - Article文章管理