设计模式---------------简单工厂模式

一、题目(Question)

使用简单工厂模式设计一个可以创建不同几何形状(如圆形、方形和三角形等)的绘图工具,每个几何图形都要有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个Unsupported Exception异常。

二、类图(Class Diagram)

三、代码(Code)

Shape.java

CircleShape.java

SquareShape.java

Triangle.java

ShapeFactory.java

package simple_factory;

/*

* 1、静态工厂类

* 2、包含一个静态方法

*/

public class ShapeFactory {

//静态方法,放回Shape抽象类型

public static Shape generateShape(String shapeName) throws Exception {

//绘制三角形图案

if (shapeName.equals("三角形"))

{

return new Triangle();

}

//绘制正方形图案

else if (shapeName.equals("正方形"))

{

return new SquareShape();

//绘制圆形图案

} else if (shapeName.equals("圆形"))

{

return new CircleShape();

//若没有用户想要的形状,则抛出一个异常Exception

}else{

throw new Exception("UnSupportedException,对不起,没有您想要的形状呢!");

}

}

}

测试代码:package simple_factory;

public class Main {

public static void main(String[] args) throws Exception {

Shape shape1 = null;

shape1 = ShapeFactory.generateShape("圆形");

shape1.draw();//我正在为您绘制圆形图案呢!

shape1.erase();//我正在为您擦除圆形图案呢!

Shape shape2 =ShapeFactory.generateShape("三角形");

shape2.draw();//我正在为您绘制三角形图案呢!

shape2.erase();//我正在为您擦除三角形图案呢!

Shape shape3= ShapeFactory.generateShape("正方形");

shape3.draw();//我正在为您擦除正方形图案呢!

shape3.erase();//我正在为您绘制正方形图案呢!

/*

* 以下代码抛出异常UnSupportException

*/

Shape shape4 = ShapeFactory.generateShape("六边形");

shape4.draw();

shape4.erase();

}

}

四、总结:

1、优点

a)用户只需要知道对象的某一个属性,如图形的名称(三角形、正方形、圆形等)即可获得一个对应的对象,而不用知道具体的实现细节。实现了对责任的有效分割。

2、缺点

a)当我们在已有图形的基础上,想要增加一个图形(如正六边形),此时我们得修改工厂类中的工厂方法,违背了设计原则中的“开闭原则”。

b)使用简单工厂模式会增加系统中类的个数,增加了系统的复杂度。

c)工厂类集中负责所有产品(图形)的生产工作,一旦工厂类不能工作,整个系统都将收到牵连。

d)拓展困难

原文:http://smallcoder.blog.51cto.com/11941149/1856070

三角形圆形创建与擦除java_设计模式---------------简单工厂模式相关推荐

  1. 设计模式 简单工厂模式

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...

  2. 设计模式—简单工厂模式

    前言 简单工厂模式是一种比较容易理解的设计模式 简单工厂模式介绍 在设计模式中,简单工厂模式可以理解为负责生产对象的一个类,当使用new 关键字创建一个对象时,此时该类就依赖于这个对象,也就是他们间的 ...

  3. 设计模式 - 简单工厂模式

    文章目录 设计模式 - 简单工厂模式 1.意图 2.实例 1.创建颜色接口 - 定义生产的产品是什么 2.创建颜色枚举 - 定义生产哪些类型的产品 3.根据颜色枚举创建产品 - 根据产品清单生产产品 ...

  4. JavaScript设计模式--简单工厂模式例子---XHR工厂

    JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...

  5. (设计模式)简单工厂模式之通过配置文件动态创建实现类

    通常我们在使用简单工厂模式的时候会由创建方法create通过传入的参数来判断要实例化哪个对象,就像下面这样: public static class ImageSelectFactory {publi ...

  6. 设计模式--简单工厂模式

    什么是工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对 ...

  7. C++设计模式--简单工厂模式

    概述 工厂模式:封装对象的实现.它可能是所有设计模式中最有用的模式之一了.这里要说的是简单工厂模式,又称为静态方法工厂模式,属于创建性模式.其原理就是通过传入的参数来判断应该创建什么对象. UML 类 ...

  8. 面向对象编程设计模式--简单工厂模式讲解(历史上最简单明白的例子)

    工作之余,在看资料过程中发现一个极易理解的简单工厂模式的例子,自己亲自试练一番,感觉对这个设计模式不熟悉的朋友, 一看马上就知道是什么回事了. 简单工厂模式根据提供给它的数据,返回几个可能类中的一个类 ...

  9. java工厂模式 uml_深入浅出设计模式-简单工厂模式

    模式定义 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式定义了一个创建对象的类,由这个类来封装实例化 ...

最新文章

  1. 在服务器无root权限手动安装texlive
  2. linux 查看文件内容的几种命令
  3. Linux 信号随笔
  4. matlab创建符号常量出错,错误:代码中意外的符号/输入/字符串常量/数值常数/特殊...
  5. 【MFC】Windows窗口样式
  6. Java中由substring方法引发的内存泄漏
  7. 无法获取 vmci 驱动程序版本: 句柄无效
  8. 洛谷P1067 多项式输出
  9. happens-before通俗理解
  10. PoolTogether 奖池开奖一名用户赢得 43,760 美元,本金仅为 73 美元
  11. 70道经典Android面试题加答案--重要知识点几乎都涉及到了
  12. android NDK 详解
  13. 各大影视、资源、技术论坛地址及简介2006版!
  14. 结构力学用计算机算的优势和不足,计算结构力学
  15. 「x86」- 特权级(Privilege Level)学习笔记 @20210215
  16. AI绘画天花板软件数画迎来重大更新,二次元虚拟头像一键生成
  17. 麻雀如何变凤凰 by 网络雄猫
  18. MSP430 MSP430单片机输入/输出模块 通用I/O端口GPIO LED按键
  19. 2015出现神曲空挡期,玖月奇迹接棒筷子兄弟?
  20. mysql群发消息_分享网站群发站内信数据库表设计

热门文章

  1. 有些人一眼就能认出来,你认出来几个?
  2. 皮一皮:充实的一天...
  3. 何为 Serverless 架构模式?这 5 大场景来告诉你!
  4. 华为:0元 + 3个月 = WEB全栈前端工程师
  5. 如何获得10倍的用户增长?| 文末福利
  6. Jenkins:配置信息变更历史
  7. 台式计算机不能有线上网,台式电脑怎么样不能有线就可以连接网络,赶紧看看...
  8. preg_relace_callback不起作用匿名函数不启作用替换字符串中的所有图片
  9. 遮挡目标检测优化笔记
  10. pytorch android