Java设计模式-简单工厂(Simple Factory)模式

这篇具有很好参考价值的文章主要介绍了Java设计模式-简单工厂(Simple Factory)模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

简单工厂(Simple Factory)模式,又称为静态工厂方法(Static Factory Method)模式。
由一个工厂类来创建具体产品,即创建具体类的实例。

简单工厂模式从概念上涉及三个角色:

  • 抽象产品角色:是具体类的父类,规定了所有类的共同行为。一般是抽象类、或者接口。
  • 具体产品角色 :是具体的实现类,继承父类、或者实现父接口。
  • 工厂类角色:提供静态方法,即工厂方法,供客户端调用,根据传入的参数,来创建具体的产品,即具体类的实例化。工程类提供的工厂方法可以有多个。

当然,上面的三个角色是从概念上进行划分的,在具体实现上,有些角色可以合并。

这个模式通过一个工厂类隔开了客户端和具体的产品类。如果增加新的产品,客户端可以不修改,但工厂类必须修改。文章来源地址https://www.toymoban.com/news/detail-570809.html

代码示例

// 定义了一个接口
package com.thb;

public interface Shape {

	// 面积
	double area();
	
	// 周长
	double perimeter();
}


// 一个具体实现类:圆
package com.thb;

public class Circle implements Shape {

	// 半径
	private double r;
	
	public double area() {
		System.out.println("圆的面积");
		return Math.PI * Math.pow(r, 2);
	}
	
	public double perimeter() {
		System.out.println("圆的周长");
		return 2 * Math.PI * r;
	}
	
	// 设置半径
	public void setRadius(double r) {
		this.r = r;
	}
}


// 具体实现类:矩形
package com.thb;

public class Rectangle implements Shape {

	// 长
	private double length;
	// 宽
	private double width;
	
	public double area() {
		System.out.println("矩形的面积");
		return length * width;
	}
	
	public double perimeter() {
		System.out.println("矩形的周长");
		return 2 * (length + width);
	}
	
	// 设置长和宽
	public void setLengthAndWidth(double length, double width) {
		this.length = length;
		this.width = width;
	}
}


// 定义一个工厂类ShapeFactory 
package com.thb;

public class ShapeFactory {

    // 一个静态工厂方法
	public static Shape getInstance(String shapeName) {
		if (shapeName == "circle") {
			return new Circle();
		} else if (shapeName == "rec") {
			return new Rectangle();
		} else {
			return null;
		}
	}
}


// 客户端
package com.thb;

public class Test1 {
		
	public static void main(String[] args) {
		Shape circle = ShapeFactory.getInstance("circle");
		Shape rectangle = ShapeFactory.getInstance("rec");
	}
}

到了这里,关于Java设计模式-简单工厂(Simple Factory)模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【设计模式-04】Factory工厂模式

    简单工厂 静态工厂 工厂方法 FactoryMethod 产品维度扩展 抽象工厂 产品一族进行扩展 Spring IOC 任何可以产生对象的方法或类,都可以称之为工厂 单例也是一种工厂 不可咬文嚼字,死扣概念 为什么有了new之后,还要有工厂? 灵活控制生产过程 权限、日志、修饰... 任意定制交通

    2024年02月02日
    浏览(41)
  • 设计模式--工厂模式(Factory Pattern)

    工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的接口,但是将对象的实例化过程推迟到子类中。工厂模式允许通过调用一个共同的接口方法来创建不同类型的对象,而无需暴露对象的实例化逻辑。 工厂模式的主要目标是解耦对象的创建和使用,以及

    2024年02月10日
    浏览(37)
  • 设计模式-简单工厂模式(静态工厂模式)java实现

    简单工厂模式根据所 提供的参数 数据返回几个可能类中的一个类的实例。通常返回的类都有一个公共的父类和公共的方法。   意图 提供一个类,负责根据一定的条件创建某一具体类的实例。同时使用工厂模式也是为了隐藏创建对象的过程 角色及其职责 (1)工厂(Creator)角色

    2024年02月13日
    浏览(53)
  • 设计模式——抽象工厂模式(Abstract Factory Pattern)

    概述        抽象工厂模式的基本思想是将一些相关的产品组成一个“产品族”,由同一个工厂统一生产。在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法具有唯一性,一般情况下,一个具体工厂中只有一个或者一组重载的工

    2024年02月03日
    浏览(47)
  • 设计模式-创建型模式之抽象工厂模式(Abstract Factory)

    在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要 一个工厂可以提供多个产品对象 ,而不是单一的产品对象。 为了更

    2023年04月20日
    浏览(42)
  • C++11 设计模式4. 抽象工厂(Abstract Factory)模式

    从前面我们已经使用了工厂方法模式 解决了一些问题。 现在 策划又提出了新的需求:对于各个怪物,在不同的场景下,怪物的面板数值会发生变化,     //怪物分类:亡灵类,元素类,机械类     //战斗场景分类:沼泽地区,山脉地区,城镇。 那么就有9类怪物====沼泽地

    2024年04月14日
    浏览(47)
  • 设计模式详解(一):工厂方法——Factory Method

    工厂方法是一种创建型设计模式。所谓创建型设计模式是说针对创建对象方面的设计模式。在面向对象的编程语言里,我们通过对象间的相互协作,共同完成复杂的业务逻辑,因而对象之间存在着依赖关系。 当对象A依赖对象B时,我们不采取直接创建对象B的方式,即 B produ

    2024年02月16日
    浏览(37)
  • Java与设计模式(1):简单工厂模式

    简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的方式,将对象的创建逻辑封装在一个工厂类中,而不是直接在客户端代码中进行实例化。 在简单工厂模式中,有三个主要角色: 工厂类(Factory Class):负责创建具体对象的工厂类。它通常包

    2024年02月11日
    浏览(50)
  • 《golang设计模式》第一部分·创建型模式-04-抽象工厂模式(Abstract Factory)

    在不具体指定产品类的情况下,为相互关联的产品簇或产品集提供创建接口,并向客户隐藏具体产品创建的细节或表示的对象。 AbstractFactory(抽象工厂):它声明了一组用于创建产品的方法,每一个方法对应一种产品。 ConcreteFactory(具体工厂):它实现了在抽象工厂中声明

    2024年02月14日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包