写点什么

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

作者:代廉洁
  • 2022 年 9 月 08 日
    浙江
  • 本文字数:1337 字

    阅读完需:约 4 分钟

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


一、类结构图



工厂角色类:设计为名称为 ShapeFactory 的具体类,面向抽象产品角色类 Shape 编程,提供静态的具体工厂方法 createShape(),createShape()内部实现根据不同参数创建不同具体产品角色类的逻辑,如果参数超出规定参数的范围,抛出 UnSupportedShapeException 异常;

抽象产品角色类:设计为名称为 Shape 的接口,包括抽象方法 draw()、抽象方法 erase();

具体产品角色类:设计为抽象产品角色类 Shape 的子类,包括具体产品角色类 Circle、具体产品角色类 Triangle、具体产品角色类 Square,分别实现抽象方法 draw()、抽象方法 erase()。


二、典型实现代码

具体形状工厂类:具体工厂角色类
// 具体形状工厂类:具体工厂角色类public class ShapeFactory {    public static Shape createShape(String type) {        if (type == "circle") {            return new Circle();        } else if (type == "square") {            return new Square();        } else if (type == "triangle") {            return new Triangle();        }        return null;    }}
复制代码


抽象形状接口:抽象产品角色类
// 抽象形状接口:抽象产品角色类public interface Shape {    public void draw();    public void erase();}
复制代码


具体圆形类:具体产品角色类
// 具体圆形类:具体产品角色类public class Circle implements Shape{    @Override    public void draw() {        System.out.println("绘制圆形");    }
@Override public void erase() { System.out.println("擦除圆形"); }}
复制代码


具体正方形类:具体产品角色类
// 具体正方形类:具体产品角色类public class Square implements Shape {    @Override    public void draw() {        System.out.println("绘制正方形");    }
@Override public void erase() { System.out.println("擦除正方形"); }}
复制代码


具体三角形类:具体产品角色类
// 具体三角形类:具体产品角色类public class Triangle implements Shape {    @Override    public void draw() {        System.out.println("绘制三角形");    }
@Override public void erase() { System.out.println("擦除三角形"); }}
复制代码


客户端代码:
public class Client {    public static void main(String[] args) {        Shape circle, square, triangle;
circle = ShapeFactory.createShape("circle"); circle.draw(); circle.erase(); System.out.println();
square = ShapeFactory.createShape("square"); square.draw(); square.erase(); System.out.println();
triangle = ShapeFactory.createShape("triangle"); triangle.draw(); triangle.erase(); System.out.println(); }}
复制代码


编译并运行程序,输出如下结果:
绘制圆形擦除圆形
绘制正方形擦除正方形
绘制三角形擦除三角形
复制代码


发布于: 刚刚阅读数: 7
用户头像

代廉洁

关注

还未添加个人签名 2019.10.15 加入

还未添加个人简介

评论

发布
暂无评论
设计模式的艺术 第四章简单工厂设计模式练习(使用简单工厂模式设计一个可以创建不同几何形状(如圆形、方形和三角形等)的绘图工具,每个几何图形都具有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个UnSupportedSha_设计模式的艺术_代廉洁_InfoQ写作社区