栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【java高级程序设计】工厂模式设置||scau实验二题目1

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【java高级程序设计】工厂模式设置||scau实验二题目1

我说,别白嫖。

目录

一、 题目

二、 代码

IFood接口:

Bread类:

Milk类:

Factory工厂类:

Main测试类:

三、 实验感悟与难题解决

1、遇到问题及解决方式

2、实验感悟


一、 题目 工厂模式:项目开发中需要考虑实例化对象的解耦和问题,工厂模式隐藏接 口对象实例化操作细节。简单案例如下: 接口定义: interface IFood { // 定义食物标准 public void eat(); // 食物的核心功能:吃 } 类图如下:

请实现 Bread 、 Milk 、 Factory 及测试主类。

二、 代码

IFood接口:
public interface IFood {
    public void eat();
}

Bread类:
public class Bread implements IFood{
    @Override
    public void eat() {
        System.out.println("吃面包……");
    }
}

Milk类:
public class Milk implements IFood{
    @Override
    public void eat() {
        System.out.println("喝牛奶……");
    }
}

Factory工厂类:
package factoryMode;


public class Factory {
    public static IFood getInstance(String className){
        if(className.equals(Bread.class.toString())){
            return new Bread();
        }else if(className.equals(Milk.class.toString())){
            return new Milk();
        }else{
            System.out.println("该食物未知。");
            return new IFood() {
                @Override
                public void eat() {
                    System.out.println("吃不明食物……");
                }
            };
        }
    }
}

Main测试类:
package factoryMode;


public class Main {
    public static void main(String[] args) {
        Bread bread = new Bread();
        IFood food1 = Factory.getInstance(bread.getClass().toString());
        food1.eat();   //吃面包……

        Milk milk = new Milk();
        IFood food2 = Factory.getInstance(milk.getClass().toString());
        food2.eat();   //喝牛奶……

        IFood food3 = Factory.getInstance("Coke");
        food3.eat();   //该食物未知。吃不明食物……

    }
}

三、 实验感悟与难题解决

这就别copy了吧。。实验报告内容。。

1、遇到问题及解决方式

        首先,在创建Milk和Bread时,思考了Milk和Bread的类型应该是class还是interface。由于Bread和Milk在实现eat方法的时候方法内容不同,所以应该是要覆盖IFood的eat()。所以应该采用class。

        其次,在测试类编写非Bread和Milk的IFood对象时,因为无法产生对象,所以要将Factory的getInstance()方法改为static静态的方法,方便调用。

2、实验感悟

        首先,在有实现、继承关系的时候,创建对象最好是向上转型。例如,当Bread是IFood的实现类时,创建bread对象最好写成:IFood bread = new Bread(); 这样令bread有拓展空间。

        其次,工厂模式类似多态,在工厂生产不同的类似产品的时候,就要使用工厂模式,让每一个产品都有相似但独立的方法。

        然后,也要注意错误提示,在创建不符合规格的对象时,也要输出结果或抛出异常。1、

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346557.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号