当前位置: 首页 手游资讯 开发语言资讯

JAVA设计模式简单工厂模式实验例题代码

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,提供一个创建对象的接口,但由工厂类来决定具体实例化哪个类。在简单工厂模式中,创建对象的逻辑被隐藏在工厂类的内部。

下面通过一个示例代码来说明简单工厂模式的使用。

假设我们有一个图形类(Shape),包括圆形(Circle)、矩形(Rectangle)和三角形(Triangle)三种实现。我们希望根据用户输入的图形类型,创建相应的对象。

定义图形接口(Shape):

```java

public interface Shape {

void draw();

}

```

实现具体的图形类,包括圆形(Circle)、矩形(Rectangle)和三角形(Triangle):

```java

public class Circle implements Shape {

@Override

public void draw() {

System.out.println("我是一个圆形");

}

}

public class Rectangle implements Shape {

@Override

public void draw() {

System.out.println("我是一个矩形");

}

}

public class Triangle implements Shape {

@Override

public void draw() {

System.out.println("我是一个三角形");

}

}

```

定义一个工厂类(ShapeFactory),根据用户输入的图形类型创建相应的对象:

```java

public class ShapeFactory {

public static Shape createShape(String shapeType) {

if (shapeType == null) {

return null;

} else if (shapeType.equalsIgnoreCase("Circle")) {

return new Circle();

} else if (shapeType.equalsIgnoreCase("Rectangle")) {

return new Rectangle();

} else if (shapeType.equalsIgnoreCase("Triangle")) {

return new Triangle();

}

return null;

}

}

```

将工厂类的创建方法调用封装至客户端类(Client)中,用于根据用户输入创建对应的图形对象:

```java

public class Client {

public static void main(String[] args) {

String shapeType = "Circle";

Shape shape = ShapeFactory.createShape(shapeType);

shape.draw();

}

}

```

在上述代码中,用户输入的图形类型为"Circle",根据用户输入,工厂类ShapeFactory将创建一个圆形对象并调用其draw()方法来绘制圆形。

通过简单工厂模式,我们将对象的创建逻辑封装在工厂类中,客户端通过调用工厂类的静态方法来创建对象,从而实现了对象的创建与使用的分离,提高了代码的灵活性和可维护性。当需要增加新的图形类型时只需在工厂类中添加相应的逻辑即可,不需要修改客户端的代码。

java设计模式工厂模式怎么实现

Java设计模式之工厂模式的实现

工厂模式是一种常见的创建型设计模式,提供了一种创建对象的最佳方式。在Java编程中,工厂模式被广泛应用于对象的创建和管理,特别是在需要根据不同条件创建不同对象的场景下。我们将介绍如何在Java中实现工厂模式。

工厂模式的核心思想是将对象的创建与使用分离。通过定义一个公共的接口,然后由具体的工厂类负责创建不同类型的对象,从而使得客户端代码只需要关注接口而无需关心具体的实现类。这种方式能够达到代码的解耦、降低维护成本和增加可扩展性的效果。

在Java中,我们可以通过两种方式实现工厂模式:简单工厂模式和抽象工厂模式。

1. 简单工厂模式

简单工厂模式是工厂模式中最简单的一种实现方式。通过一个工厂类负责创建不同类型的对象,根据客户端的需求返回相应的对象。下面是一个简单工厂模式的示例代码:

```java

public interface Product {

void use();

}

public class ConcreteProductA implements Product {

@Override

public void use() {

System.out.println("使用具体产品A");

}

}

public class ConcreteProductB implements Product {

@Override

public void use() {

System.out.println("使用具体产品B");

}

}

public class SimpleFactory {

public static Product createProduct(String type) {

if (type.equals("A")) {

return new ConcreteProductA();

} else if (type.equals("B")) {

return new ConcreteProductB();

} else {

throw new IllegalArgumentException("Unsupported product type: " + type);

}

}

}

public class Client {

public static void main(String[] args) {

Product productA = SimpleFactory.createProduct("A");

productA.use();

Product productB = SimpleFactory.createProduct("B");

productB.use();

}

}

```

在上述代码中,我们定义了一个接口`Product`,具体的产品类`ConcreteProductA`和`ConcreteProductB`实现了该接口。`SimpleFactory`作为工厂类负责创建不同类型的产品。客户端通过调用`SimpleFactory`的`createProduct`方法来创建产品对象。

2. 抽象工厂模式

抽象工厂模式是工厂模式中更为复杂的一种实现方式。通过定义一组接口,用于创建一系列相关或依赖对象的产品族。下面是一个抽象工厂模式的示例代码:

```java

public interface ProductA {

void use();

}

public class ConcreteProductA1 implements ProductA {

@Override

public void use() {

System.out.println("使用具体产品A1");

}

}

public class ConcreteProductA2 implements ProductA {

@Override

public void use() {

System.out.println("使用具体产品A2");

}

}

public interface ProductB {

void use();

}

public class ConcreteProductB1 implements ProductB {

@Override

public void use() {

System.out.println("使用具体产品B1");

}

}

public class ConcreteProductB2 implements ProductB {

@Override

public void use() {

System.out.println("使用具体产品B2");

}

}

public interface AbstractFactory {

ProductA createProductA();

ProductB createProductB();

}

public class ConcreteFactory1 implements AbstractFactory {

@Override

public ProductA createProductA() {

return new ConcreteProductA1();

}

@Override

public ProductB createProductB() {

return new ConcreteProductB1();

}

}

public class ConcreteFactory2 implements AbstractFactory {

@Override

public ProductA createProductA() {

return new ConcreteProductA2();

}

@Override

public ProductB createProductB() {

return new ConcreteProductB2();

}

}

public class Client {

public static void main(String[] args) {

AbstractFactory factory1 = new ConcreteFactory1();

ProductA productA1 = factory1.createProductA();

productA1.use();

ProductB productB1 = factory1.createProductB();

productB1.use();

AbstractFactory factory2 = new ConcreteFactory2();

ProductA productA2 = factory2.createProductA();

productA2.use();

ProductB productB2 = factory2.createProductB();

productB2.use();

}

}

```

在上述代码中,我们定义了两个产品族`ProductA`和`ProductB`,分别有两个具体的产品实现类。`AbstractFactory`作为抽象工厂接口,由具体的工厂类`ConcreteFactory1`和`ConcreteFactory2`负责创建相应的产品族。客户端可以根据不同的工厂选择不同的产品族。

java设计模式之工厂模式

工厂模式是一种创建型设计模式,提供了一种创建对象的最佳方式,解决了直接实例化对象的问题。在工厂模式中,我们通过调用工厂类的方法,不是直接调用对象的构造函数来创建对象。

工厂模式主要包含三个角色:抽象工厂、具体工厂和产品。抽象工厂是工厂模式的核心,定义了一个创建对象的接口,具体工厂实现了抽象工厂接口,用于创建具体的产品。产品是由具体工厂创建的,们共同实现了一个抽象产品接口。

工厂模式的优点之一是可以隐藏对象创建的细节,使得客户端代码与具体产品的创建过程解耦。客户端只需要通过工厂类创建产品对象,无需关心具体的实现细节。这样可以在不影响客户端代码的情况下,改变产品的实现方式。

工厂模式还可以根据需要创建不同类型的产品。只需要增加具体工厂和具体产品的实现,即可扩展工厂模式。这种灵活性使得工厂模式在实际项目中广泛应用。

下面以一个简单的例子来说明工厂模式的应用。假设我们在开发一个游戏,需要创建不同类型的角色,如战士、法师和射手。这些角色都有共同的基类Character,但具体的实现方式不同。

我们定义一个抽象工厂CharacterFactory,包含一个创建角色的方法createCharacter。我们定义具体的工厂WarriorFactory、MagicianFactory和ArcherFactory,们实现了CharacterFactory接口,分别用于创建战士、法师和射手角色。

我们定义一个角色的抽象基类Character,包含一个抽象方法display,用于展示角色的信息。我们定义具体的角色类Warrior、Magician和Archer,们继承了Character基类并实现了display方法。

我们在客户端代码中使用工厂类创建角色对象。客户端只需要通过CharacterFactory调用createCharacter方法,无需关心具体的角色实现方式。

通过工厂模式,我们可以很方便地扩展角色的种类,只需要增加具体工厂和具体角色的实现。如果需要创建新的角色类型,如刺客,只需要定义新的具体工厂和具体角色类。

声明:

1、本文来源于互联网,所有内容仅代表作者本人的观点,与本网站立场无关,作者文责自负。

2、本网站部份内容来自互联网收集整理,对于不当转载或引用而引起的民事纷争、行政处理或其他损失,本网不承担责任。

3、如果有侵权内容、不妥之处,请第一时间联系我们删除,请联系

  1. 暗黑神界VS子弹突袭战
  2. 少女约会手游VS醉赤壁官方版
  3. 火灾逃离3DVS九天修者
  4. 176裁决者传奇VS王与异界骑士IOS版
  5. 莎莉之定律内购官方正版VS开战冰雪手机版
  6. 迷你摩托车挑战赛VS剑来九州
  7. 格斗宗师官网首发版VS神威战队中文破解版
  8. 口袋妖怪觉醒官方版VS阿拉德之怒2018
  9. 王城英雄复古版VSEggyGo国际服正式服
  10. 糖豆人混战VS汉末烽火手游
  11. 进击冒险书最新版VS抖音传奇变态版
  12. 暴风兽魔城安卓版VS乐高无限华为客户端