1. 使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数“M”,则返回一个Man对象,如果传入参数“W”,则返回一个Woman对象,用Java语言实现该场景。现需要增加一个新的Robot类,如果传入参数“R”,则返回一个Robot对象,对代码进行修改并注意“女娲”的变化。

首先定义一个接口

public interface Person {
}

然后三个子类继承这个接口,顺便附加构造方法

public class Man implements Person {
    public Man() {
        System.out.println("Hi, I'm a man.");
    }
}

其他两个类也使用类似的方法

Nvwa作为工厂类

public class Nvwa {
    public static Person createPerson(String type) {
        if ("M".equals(type)) {
            return new Man();
        } else if ("W".equals(type)) {
            return new Woman();
        } else if ("R".equals(type)) {
            return new Robot();
        } else {
            throw new IllegalArgumentException("Invalid type: " + type);
        }
    }
}

最后进行测试

import java.util.Scanner;

public class TestPerson {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Nvwa nvwa = new Nvwa();
        System.out.println("ernter R or M or N");
        Person person = Nvwa.createPerson(scan.nextLine());
        System.out.println(person);
    }
}

  1. 现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器(ImageReader),如GIF图片读取器(GifReader)用于读取GIF格式的图片、JPG图片读取器(JpgReader)用于读取JPG格式的图片。图片读取器对象通过图片读取器工厂ImageReaderFactory来创建,ImageReaderFactory是一个抽象类,用于定义创建图片读取器的工厂方法,其子类GifReaderFactory和JpgReaderFactory用于创建具体的图片读取器对象。使用工厂方法模式实现该程序的设计。

首先是接口ImageReader

public interface ImageReader {
    void readImage(String imageName);
}

然后是ImageReaderFactory

public abstract class ImageReaderFactory {
    public abstract ImageReader createImageReader();
}

接下来是对应的子类GifReader,JpgReader同理

public class GifReader implements ImageReader {
    public void readImage(String imageFile) {
        // 读取 GIF 格式的图片
        System.out.println("Reading GIF image: " + imageFile);
    }
}

以及对应的工厂

public class GifReaderFactory extends ImageReaderFactory {
    @Override
    public ImageReader createImageReader() {
        return new GifReader();
    }
}

测试

public class TestReader {
    public static void main(String[] args) {
        // 创建GIF图片读取器
        ImageReaderFactory gifReaderFactory = new GifReaderFactory();
        ImageReader gifReader = gifReaderFactory.createImageReader();
        gifReader.readImage("image.gif");

        // 创建JPG图片读取器
        ImageReaderFactory jpgReaderFactory = new JpgReaderFactory();
        ImageReader jpgReader = jpgReaderFactory.createImageReader();
        jpgReader.readImage("image.jpg");
    }
}