首页 > 其他分享 >设计模式—工厂模式

设计模式—工厂模式

时间:2023-12-23 12:44:37浏览次数:21  
标签:draw Square 模式 public Shape 工厂 设计模式 class Rectangle

介绍

代码

接口

创建 Shape 接口

public interface Shape {
    void draw();
}

实现类

创建 Shape 接口的三个实现类:CirleRectangleSquare

public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Circle");
    }
}
public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Rectangle");
    }
}
public class Square implements Shape {
    @Override
    public void draw() {
        System.out.println("Square");
    }
}

工厂类

创建工厂类,用于生产指定类型的 Shape

public class ShapeFactory {
    public Shape getShape(String type) {
        if(type == null){
            return null;
        }

        if(type.equalsIgnoreCase("Circle")) {
            return new Circle();
        }
        if(type.equalsIgnoreCase("Rectangle")) {
            return new Rectangle();
        }
        if(type.equalsIgnoreCase("Square")) {
            return new Square();
        }

        return null;
    }
}

测试

public class FactoryTest {
    @Test
    void test() {
        ShapeFactory shapeFactory = new ShapeFactory();
        Shape circle = shapeFactory.getShape("Circle");
        Assertions.assertEquals(circle.getClass(), Circle.class);
        circle.draw();

        Shape rectangle = shapeFactory.getShape("Rectangle");
        Assertions.assertEquals(rectangle.getClass(), Rectangle.class);
        rectangle.draw();

        Shape square = shapeFactory.getShape("Square");
        Assertions.assertEquals(square.getClass(), Square.class);
        square.draw();
    }
}

标签:draw,Square,模式,public,Shape,工厂,设计模式,class,Rectangle
From: https://www.cnblogs.com/shixuanliu/p/17922955.html

相关文章

  • 26.基于 page object 模式的测试框架优化实战
    目录异常处理(弹窗黑名单)日志记录报告生成测试数据的数据驱动异常弹框处理定义黑名单列表处理弹框#声明一个黑名单defblack_wrapper(fun):defrun(*args,**kwargs):basepage=args[0]try:returnfun(*args,**kwargs)......
  • 设计模式—适配器模式
    介绍代码接口定义媒体播放器接口MediaPlayer,其中play方法用于播放媒体文件publicinterfaceMediaPlayer{publicvoidplay(StringaudioType,StringfileName);}定义高级播放器接口AdvancedMediaPlayer,规定指定类型媒体的播放方法publicinterfaceAdvancedMe......
  • 一文看懂java单例模式
    ​ Java单例模式是一种常用的创建型设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来访问该实例。在Java中,有多种方式可以实现单例模式,下面详细介绍其中的几种常见实现方式。1什么是创建型设计模式?处理对象创建的模式,简答的理解就是如何创建对象?很多人都会想到new......
  • 在 Linux 上以 All-in-One 模式安装 KubeSphere
    1、什么是KubeSphere KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的IT自动化运维能力,简化企业的DevOps工作流。它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用(plug-and-play)......
  • javaweb中的设计模式
    1.监听器基于观察者模式。1.myTestEvent自定义事件。被观察者publicclassMyTestEventextendsApplicationEvent2.MyNoAnnotationListener自定义监听器。观察者@ComponentpublicclassMyNoAnnotationListenerimplementsApplicationListener<MyTestEvent>{@Override......
  • 责任链模式
    #include<iostream>#include<string>#include<sstream>usingnamespacestd;template<classT>stringMyConvertToString(Tvalue){stringstreamss;ss<<value;returnss.str();}//顶层的抽象类,规范了击鼓传花的组合能力classH......
  • 策略模式:让你的代码灵活应对不同场景
    写在前面如果你正在为代码的可扩展性和可维护性感到烦恼,策略模式可以成为你的得力助手。本篇技术文章详细介绍了策略模式的核心原理和实战应用,帮助你解决在程序设计中所面临的挑战。无论你是初学者还是有一定经验的开发者,这篇文章都能够为你提供有益的知识和实用的技巧,值得一读!前......
  • 设计模式之工厂模式
    工厂模式(工厂模式)工厂将创建对象的细节抽离出来,实现对修改关闭。定义==工厂方法模式==定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。工厂模式有3种不同的实现方式,分别是简单工厂模式、工厂方法模式和抽象工厂模式。工厂......
  • Tita丨升级看板模式
    看板模式价值:看板模式可以灵活的对任务进行分类和管理,可以根据项目的需要,来创建不同的看板,根据看板,来把任务进行清晰的分类。对于任务和看板可以进行灵活的拖拽,以此来重新设置任务或看板的位置,它比里程碑对任务的展示更加轻量~Tita-OKR和新绩效一体化管理平台该如何来玩转看......
  • 微服务广播模式实践:维护内存数据的缓存一致性
    本文分享自华为云社区《微服务广播模式实践》,作者:张俭。微服务广播模式,指的是在微服务多实例部署的场景下,将消息广播到多个微服务实例的一种模式。广播模式,一般用来维护微服务的内存数据,根据数据类型的不同,有助于解决两类问题。通常广播模式会使用支持发布订阅的消息中间件实......