三角形圆形创建与擦除java_设计模式---------------简单工厂模式
设计模式---------------简单工厂模式
一、题目(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_设计模式---------------简单工厂模式相关推荐
- 设计模式 简单工厂模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...
- 设计模式—简单工厂模式
前言 简单工厂模式是一种比较容易理解的设计模式 简单工厂模式介绍 在设计模式中,简单工厂模式可以理解为负责生产对象的一个类,当使用new 关键字创建一个对象时,此时该类就依赖于这个对象,也就是他们间的 ...
- 设计模式 - 简单工厂模式
文章目录 设计模式 - 简单工厂模式 1.意图 2.实例 1.创建颜色接口 - 定义生产的产品是什么 2.创建颜色枚举 - 定义生产哪些类型的产品 3.根据颜色枚举创建产品 - 根据产品清单生产产品 ...
- JavaScript设计模式--简单工厂模式例子---XHR工厂
JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...
- (设计模式)简单工厂模式之通过配置文件动态创建实现类
通常我们在使用简单工厂模式的时候会由创建方法create通过传入的参数来判断要实例化哪个对象,就像下面这样: public static class ImageSelectFactory {publi ...
- 设计模式--简单工厂模式
什么是工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对 ...
- C++设计模式--简单工厂模式
概述 工厂模式:封装对象的实现.它可能是所有设计模式中最有用的模式之一了.这里要说的是简单工厂模式,又称为静态方法工厂模式,属于创建性模式.其原理就是通过传入的参数来判断应该创建什么对象. UML 类 ...
- 面向对象编程设计模式--简单工厂模式讲解(历史上最简单明白的例子)
工作之余,在看资料过程中发现一个极易理解的简单工厂模式的例子,自己亲自试练一番,感觉对这个设计模式不熟悉的朋友, 一看马上就知道是什么回事了. 简单工厂模式根据提供给它的数据,返回几个可能类中的一个类 ...
- java工厂模式 uml_深入浅出设计模式-简单工厂模式
模式定义 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式定义了一个创建对象的类,由这个类来封装实例化 ...
最新文章
- 在服务器无root权限手动安装texlive
- linux 查看文件内容的几种命令
- Linux 信号随笔
- matlab创建符号常量出错,错误:代码中意外的符号/输入/字符串常量/数值常数/特殊...
- 【MFC】Windows窗口样式
- Java中由substring方法引发的内存泄漏
- 无法获取 vmci 驱动程序版本: 句柄无效
- 洛谷P1067 多项式输出
- happens-before通俗理解
- PoolTogether 奖池开奖一名用户赢得 43,760 美元,本金仅为 73 美元
- 70道经典Android面试题加答案--重要知识点几乎都涉及到了
- android NDK 详解
- 各大影视、资源、技术论坛地址及简介2006版!
- 结构力学用计算机算的优势和不足,计算结构力学
- 「x86」- 特权级(Privilege Level)学习笔记 @20210215
- AI绘画天花板软件数画迎来重大更新,二次元虚拟头像一键生成
- 麻雀如何变凤凰 by 网络雄猫
- MSP430 MSP430单片机输入/输出模块 通用I/O端口GPIO LED按键
- 2015出现神曲空挡期,玖月奇迹接棒筷子兄弟?
- mysql群发消息_分享网站群发站内信数据库表设计
热门文章
- 有些人一眼就能认出来,你认出来几个?
- 皮一皮:充实的一天...
- 何为 Serverless 架构模式?这 5 大场景来告诉你!
- 华为:0元 + 3个月 = WEB全栈前端工程师
- 如何获得10倍的用户增长?| 文末福利
- Jenkins:配置信息变更历史
- 台式计算机不能有线上网,台式电脑怎么样不能有线就可以连接网络,赶紧看看...
- preg_relace_callback不起作用匿名函数不启作用替换字符串中的所有图片
- 遮挡目标检测优化笔记
- pytorch android