简单工厂创建不同几何图形(Java代码实例)
使用简单工厂模式设计一个可以创建不同几何图形(Shape),如Circle,Rectangle,Triangle等绘图工具类,每个几何图形均具有绘制Draw()和擦除Erase()两个方法;要求在绘制不支持的几何图形时,抛出一个UnsuppShapeException异常,绘制类图并使用Java语言实现。
/** * Description: 抽象产品角色 */
public abstract class Shape { public abstract void draw(); public abstract void erase();
}/** * Description: 具体产品角色 */
public class Round extends Shape { @Override public void draw() { System.out.println("绘制圆形"); } @Override public void erase() { System.out.println("擦除圆形"); }
}
public class Square extends Shape { @Override public void draw() { System.out.println("绘制方形"); } @Override public void erase() { System.out.println("擦除方形"); }
}
public class Triangle extends Shape { @Override public void draw() { System.out.println("绘制三角形"); } @Override public void erase() { System.out.println("擦除三角形"); }
}/** * Description: 工厂角色 */
public class ShapeFactory { // 声明创建形状的静态工厂方法 public static Shape createShape(String type) throws UnSupportedShapeException { Shape shape; if ("圆形".equals(type)) { shape = new Round(); } else if ("方形".equals(type)) {shape = new Square(); } else if ("三角形".equals(type)) { shape = new Triangle(); } else { throw new UnSupportedShapeException("UnSupportedShapeException"); } return shape;}
} /** * Description: 自定义异常 */
public class UnSupportedShapeException extends Exception { public UnSupportedShapeException(String message) { super(message); }
}/** * Description: 客户端 */
public class DrawingTool { public static void main(String[] args) { Shape s1, s2, s3, s4; try { s1 = ShapeFactory.createShape("圆形"); s2 = ShapeFactory.createShape("方形"); s3 = ShapeFactory.createShape("三角形"); s1.draw(); s1.erase(); s2.draw(); s2.erase(); s3.draw(); s3.erase(); // s4.draw(); // s4.erase(); } catch (Exception e) { System.out.println(e.getMessage()); } }
}
简单工厂创建不同几何图形(Java代码实例)相关推荐
- java订单类_基于Java创建一个订单类代码实例
这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需求描述 定义一个类,描述订单信息 订单id 订 ...
- java订单类_使用Java创建一个订单类代码实例
这篇文章主要简介了使用Java创建一个订单类代码实例,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 需求描述 定义一个类,描述订单信息 订单id ...
- java考察代码_一段简单的关于字符串的 Java 代码竟考察了这么多东西
下面的代码运行结果是什么?解释一下为什么会有这些差异. String s1 = "hello"; String s2 = s1 + ",world"; Stri ...
- 【Java 代码实例 14】BeanUtils用法详解,附源码分析
目录 一.org.apache.commons.beanutils.BeanUtils简介 二.使用的前置条件 三.添加pom 四.org.apache.commons.beanutils.BeanU ...
- 【Java 代码实例 13】Java操作pdf的工具类itext
目录 一.什么是iText? 二.引入jar 1.项目要使用iText,必须引入jar包 2.输出中文,还要引入下面```itext-asian.jar```包 3.设置pdf文件密码,还要引入下面` ...
- C# EF Core 简单工厂模式,接口多继承实例(三)
一.说明 1.本实例是基于.Net Core 1.1,EF Core 1.1的代码实例,仅供参考 2.当前版本的EF Core好像还没有提供模型验证,异常跟踪等 二.实体层,自动 生成 三 .接口层 ...
- python读文件代码-简单了解Python读取大文件代码实例
这篇文章主要介绍了简单了解Python读取大文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通常对于大文件读取及处理,不可能直接加载到内 ...
- 手撕设计模式之「简单工厂模式」(Java描述)
前言 利用简单工厂模式可以实现对象创建和业务逻辑处理的分离,但存在工厂类职责过重,增添新产品违背开闭原则等问题.它不属于GoF 23种设计模式之一,但是它可以作为学习工厂方法模式前的一个很好的引导. ...
- 设计模式(一)简单工厂(创建型)(JavaPHP)
面向对象设计的基本原则 单一职责系统中的每一个对象应该只有一个单独的职责,所有对象关注的应该是自身职责的完成. 基本思想:高内聚,低耦合. 开闭原则一个对象对扩展开放,对修改关闭. 基本思想:对类的改 ...
最新文章
- 小程序获取form_id 与 小程序获取openid
- Access context of data source and work center view do not match
- 【pyradiomics学习】——影像组学特征
- feign调用接口参数可以为null吗_FeignClient调用POST请求时查询参数被丢失的情况分析与处理...
- Python刷csdn访问量
- “3遍读书法” 我是这样自学编程的
- 数据:以太坊2.0合约24小时新增2.04万ETH
- 为什么现在的监控系统容易硬盘坏?附原理解析
- Zabbix 对接 LDAP 实现用户统一登录的方法
- 亚吉铁路 + 蒙内铁路
- micropython常用模块有那个_Python17个常用内置模块总结
- 中职学校计算机课听课记录表,中职语文听课记录10篇
- oracle查看服务器的时间,Oracle如何获取系统当前时间等操作实例
- UML小结,UML图,UML例子
- apache与php乱码
- ubuntu安装zsh及环境配置
- vue3—reactive如何更改属性
- Sublime text3143中文乱码只能输入繁体字
- iOS Returning block that lives on the local stack 错误解决
- [2016 NUIST 程序设计竞赛] B. 欧几里得的公约数
热门文章
- 【论文笔记】Birthday, Name and Bifacial-security Understanding Passwords of Chinese Web Users
- 动态添加 Redis 密码认证
- Android推送 百度云推送
- 《剑指offer》第二章——关于面试官王海波的思考
- 【window 小技巧】 如何删除电脑临时文件
- 互联网医院系统详细设计-医生端
- Mysql中CURRENT_TIMESTAMP,CURRENT_DATE,CURRENT_TIME,now(),sysdate()各项值的区别
- Fiddler断点Automatic Breakpoints的使用
- Android项目实战之尚硅谷_硅谷p2p金融
- SPOJ - GCJ1C09C Bribe the Prisoners