- 浏览: 203637 次
- 性别:
- 来自: 芜湖
文章分类
- 全部博客 (139)
- 软件 (0)
- Pattern (6)
- CSDN导入 (19)
- Struts (3)
- [网站分类]1.网站首页原创 (27)
- [网站分类]6.转载区 (4)
- Hibernate (10)
- Error (8)
- [网站分类]2.Java新手区 (20)
- Java (8)
- [网站分类]4.其他技术区 (10)
- Web (1)
- C++ (2)
- Algorithm (4)
- Linux (2)
- Skill (1)
- Tech (2)
- Note (2)
- [网站分类]3.非技术区 (1)
- Database (1)
- Winty (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
最新评论
-
haohao-xuexi02:
很不错哦。
O'Reilly cos上传组件的使用(1/3) - 上传文件 -
yoin528:
useUnicode=true&charact ...
[原]向MySQL数据库插入Blob数据的问题 -
xiaoqing20:
下载来看看!呵呵
[原]Struts2类型转换 -
xiaoqing20:
[原]Struts2类型转换
[关键字]:java,设计模式,简单工厂,《java与模式》
[环境]:StarUML + JDK6
[作者]:Winty (wintys@gmail.com)
简单工厂模式:
代码:
/**
*简单工厂测试
*@version 2009-3-25
*@author Winty(wintys@gmail.com)
*/
package pattern.simplefactory;
public class SimpleFactory{
public static void main(String[] args){
Shape shape;
try{
shape = ArtTracer.factory("circle");
shape.draw();
shape.erase();
shape = ArtTracer.factory("square");
shape.draw();
shape.erase();
shape = ArtTracer.factory("triangle");
shape.draw();
shape.erase();
//未知图形类型
shape = ArtTracer.factory("unknownShape");
shape.draw();
shape.erase();
}catch(BadShapeException e){
System.out.println(e.getMessage());
}
}
}
/**
*简单工厂:绘图员
*/
class ArtTracer{
public static Shape factory(String type)throws BadShapeException{
if(type.equalsIgnoreCase("Circle")){
return new Circle();
}else if(type.equalsIgnoreCase("Square")){
return new Square();
}else if(type.equalsIgnoreCase("Triangle")){
return new Triangle();
}else{
throw new BadShapeException(type);
}
}
}
/**
*抽象产品
*/
abstract class Shape{
public abstract void draw();
public abstract void erase();
}
/**
*具体产品
*/
class Circle extends Shape{
public void draw(){
System.out.println("Circle draw");
}
public void erase(){
System.out.println("Circle erase");
}
}
/**
*具体产品
*/
class Square extends Shape{
public void draw(){
System.out.println("Square draw");
}
public void erase(){
System.out.println("Square erase");
}
}
/**
*具体产品
*/
class Triangle extends Shape{
public void draw(){
System.out.println("Triangle draw");
}
public void erase(){
System.out.println("Triangle erase");
}
}
/**
*辅助类:当输入的类为不支持的图形时,抛出异常
*/
class BadShapeException extends Exception{
public BadShapeException(String type){
super(type + ":不支持的图形");
}
}
*简单工厂测试
*@version 2009-3-25
*@author Winty(wintys@gmail.com)
*/
package pattern.simplefactory;
public class SimpleFactory{
public static void main(String[] args){
Shape shape;
try{
shape = ArtTracer.factory("circle");
shape.draw();
shape.erase();
shape = ArtTracer.factory("square");
shape.draw();
shape.erase();
shape = ArtTracer.factory("triangle");
shape.draw();
shape.erase();
//未知图形类型
shape = ArtTracer.factory("unknownShape");
shape.draw();
shape.erase();
}catch(BadShapeException e){
System.out.println(e.getMessage());
}
}
}
/**
*简单工厂:绘图员
*/
class ArtTracer{
public static Shape factory(String type)throws BadShapeException{
if(type.equalsIgnoreCase("Circle")){
return new Circle();
}else if(type.equalsIgnoreCase("Square")){
return new Square();
}else if(type.equalsIgnoreCase("Triangle")){
return new Triangle();
}else{
throw new BadShapeException(type);
}
}
}
/**
*抽象产品
*/
abstract class Shape{
public abstract void draw();
public abstract void erase();
}
/**
*具体产品
*/
class Circle extends Shape{
public void draw(){
System.out.println("Circle draw");
}
public void erase(){
System.out.println("Circle erase");
}
}
/**
*具体产品
*/
class Square extends Shape{
public void draw(){
System.out.println("Square draw");
}
public void erase(){
System.out.println("Square erase");
}
}
/**
*具体产品
*/
class Triangle extends Shape{
public void draw(){
System.out.println("Triangle draw");
}
public void erase(){
System.out.println("Triangle erase");
}
}
/**
*辅助类:当输入的类为不支持的图形时,抛出异常
*/
class BadShapeException extends Exception{
public BadShapeException(String type){
super(type + ":不支持的图形");
}
}
发表评论
-
[原]导出CodeHelp的数据
2009-03-16 17:05 861搬到blogjava总得发点原创的东西吧。 Code ... -
[原]使用Ant实现zip压缩解压功能
2009-03-19 13:17 1723[关键词]:ant,zip,unzip,Apache,压缩,解 ... -
[原]EL函数的使用
2009-04-03 21:29 1122[标题]:EL函数的使用 [时 ... -
[原]对Class.getMethod()的调用未经检查
2009-04-05 15:52 2366[标题]:对Class.getMethod()的调用未经检查 ... -
[原]JNI简单示例
2009-04-05 21:33 1040[标题]:JNI简单示例 [时 ... -
[原]工厂模式
2009-04-14 12:32 735[关键字]:java,design pattern,设计模式, ... -
[原]抽象工厂模式
2009-04-14 19:25 761[关键字]:java,design pattern,设计模式, ... -
[原]方法返回值为数组的另一种表示方法
2009-04-25 22:28 979[时间]:2009-04-25 今天看到JDK的源代码 ... -
[原]SAX使用示例
2009-04-26 19:18 2054[标题]:[原]SAX使用示例 [时间]:2009-4-25 ... -
[原]责任链模式
2009-05-09 16:47 738[关键字]:java,design pattern,设计模式, ... -
[原]状态模式
2009-05-18 23:03 840[关键字]:java,design pattern,设计模式, ... -
[原]策略模式
2009-05-21 22:21 707[关键字]:java,design pattern,设计模式, ... -
[原]VC实现重启路由器
2009-05-29 23:36 2083[标题]:[原]VC实现重启路 ... -
[原]远程登录Windows Server 2003的当前会话
2009-06-01 11:19 2075[标题]:远程登录Windows Server 2003的当前 ... -
[原]Tomcat crossContext
2009-06-01 12:27 6104[标题]:Tomcat crossContext [时间]:2 ... -
[原]装饰模式1
2009-06-07 22:33 717[关键字]:java,design pattern,设计模式, ... -
[原]装饰模式3-Grep
2009-06-07 22:42 702[关键字]:java,design pattern,设计模式, ... -
[原]合成模式-透明的
2009-06-08 22:23 766[关键字]:java,design pattern,设计模式, ... -
[原]合成模式-安全的
2009-06-08 22:27 842[关键字]:java,design pattern,设计模式, ... -
[原]模板方法模式
2009-06-15 17:05 678[关键字]:java,design pattern,设计模式, ...
相关推荐
MVC模式使得用户界面与数据逻辑分离,单例模式保证关键资源的唯一访问点,代理模式在访问对象前后增加额外的功能,工厂模式将对象创建与使用分离,简单工厂模式为对象创建提供一个简单便捷的接口。通过这些模式,...
在这个压缩包中,我们重点关注两种模式:单例模式和简单工厂模式。 单例模式是一种创建型设计模式,其核心特点是保证一个类只有一个实例,并提供一个全局访问点。在Java中实现单例,通常有懒汉式、饿汉式和双重检查...
NULL 博文链接:https://jacky-dai.iteye.com/blog/2296369
工厂模式有简单工厂、工厂方法和抽象工厂三种形态,分别适用于不同级别的抽象和灵活性需求。 2. 动态代理:动态代理模式在Java中主要通过Java的反射API和InvocationHandler接口实现。它可以动态地生成一个代理类,...
1)程序功能:用简单工厂模式实现计算器功能,采用PHP编写。 2)程序详解地址:http://blog.csdn.net/clevercode/article/details/45692995。 3)原创作品,出自"CleverCode的博客",分类为《设计模式之PHP项目应用...
***中简单工厂模式与工厂方法模式的论述主要涉及以下知识点: 简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,有一个专门负责创建对象的工厂类,根据客户端传入的参数,...
工厂模式是一种简单而强大的设计模式,它提供了一种灵活的对象创建机制,有助于解耦对象的创建和使用。在JavaScript中实现工厂模式,可以有效地提高代码的模块化和可维护性。通过本文的介绍,你应该能够理解工厂模式...
学习这个模式时,需要注意理解抽象工厂模式与其他创建型模式(如简单工厂、工厂方法和建造者模式)的区别,以及如何在实际项目中合理选择和应用。同时,也要关注模式的优缺点,例如它能很好地封装变化,但可能会导致...
抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 ...
在给定的文件中,我们看到一个名为“原料工厂”的实现,这是简单工厂模式的一个例子,用于创建披萨的各个组成部分。下面我们将详细探讨这个原料工厂以及与之相关的知识点。 **简单工厂模式**: 简单工厂模式是设计...
其次,简单工厂模式是一种创建型设计模式,它提供了一个公共接口来创建对象,而无需指定具体类。在UML中,我们会看到一个名为`Factory`的类,它有一个或多个创建对象的方法,这些方法根据输入参数返回不同类型的实例...
1. 简单工厂(Simple Factory):简单工厂是工厂模式三种形态中结构最为简单的。主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例。 简单工厂的优点是可以动态决定应该实例化哪...
静态工厂模式,通常也被称为简单工厂模式。这种模式提供一个创建对象的接口,让其在内部根据输入参数的不同来创建并返回不同类的实例。静态工厂模式的主要组成部分包括工厂类角色、抽象产品角色和具体产品角色。工厂...
2. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建对象时,我们不会对客户端暴露创建逻辑,而是引用一个共同的接口来指向新创建的对象。这有助于提升代码的...
创建型模式关注对象的创建过程,如单例模式(Singleton)、工厂模式(Factory)和抽象工厂模式(Abstract Factory)等。它们提供了不同的方式来创建对象,使得对象的创建过程更加灵活,同时也隐藏了具体的实现细节。...
首先,简单工厂模式是最基础的形式,它通过一个函数来创建具有特定属性的对象。例如,创建Person对象的简单工厂模式如下: ```javascript function createPerson(name, age) { var obj = {}; obj.name = name; ...
Nexus设备通常能第一时间获得Android的系统更新,并且非常适合刷机爱好者,因为它们的解锁和刷机流程相对简单。 **四、刷回原生系统步骤** 1. **准备工具**:首先,你需要下载对应Nexus设备的官方工厂镜像,这些...
工厂模式分为简单工厂模式和工厂方法模式。 2. **工厂方法模式**:工厂方法模式是工厂模式的进一步扩展,它定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。这样,工厂方法让类的实例化推迟到子类中...