2023/11/6星期一总结

软件设计                  石家庄铁道大学信息学院

 

实验4:抽象工厂模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解抽象工厂模式的动机,掌握该模式的结构;

2、能够利用抽象工厂模式解决实际问题

 

[实验任务一]:人与肤色

使用抽象工厂模式,完成下述产品等级结构:

 

实验要求:

1.画出对应的类图;

2.提交源代码;

3.注意编程规范。

 

源代码:

BlackFactory.java

package moshi;

 

public class BlackFactory implements MWFactory

{

    public Man produceMan()

    {

        return new BlackSkinMan();

    }

 

    public Woman produceWomen()

    {

        return new BlackSkinWomen();

    }

}

 

BlackSkinMan.java

package moshi;

 

public class BlackSkinMan implements Man

{

    public void play()

    {

        System.out.println("我是黑种男人!");

    }

}

 

BlackSkinWomen.java

package moshi;

 

public class BlackSkinWomen implements Woman

{

    public void play()

    {

        System.out.println("我是黑种女人!");

    }

}

 

Client.java

package moshi;

 

public class Client

{

    public static void main(String args[])

    {

        try

        {

            MWFactory factory;

            Man m;

            Woman w;

            factory=(MWFactory)XMLUtil.getBean();

            m=factory.produceMan();

            m.play();

            w=factory.produceWomen();

            w.play();

        }

        catch(Exception e)

        {

            System.out.println(e.getMessage());

        }

    }

}

 

Man.java

package moshi;

 

public interface Man

{

    public void play();

}

 

MWFactory.java

package moshi;

 

public interface MWFactory

{

    public Man produceMan();

    public Woman produceWomen();

}

 

WhiteFactory.java

package moshi;

 

public class WhiteFactory implements MWFactory

{

    public Man produceMan()

    {

        return new WhiteSkinMan();

    }

 

    public Woman produceWomen()

    {

        return new WhiteSkinWomen();

    }

}

 

WhiteSkinMan.java

package moshi;

 

public class WhiteSkinMan implements Man{

    public void play()

    {

        System.out.println("我是白种男人!");

    }

}

 

WhiteSkinWomen.java

package moshi;

 

public class WhiteSkinWomen implements Woman{

    public void play()

    {

        System.out.println("我是白种女人!");

    }

}

 

Woman.java

package moshi;

 

public interface Woman

{

    public void play();

}

 

XMLUtil.java

 package moshi;

 import javax.xml.parsers.*;

 import org.w3c.dom.*;

 import java.io.File;

 

 public class XMLUtil {

     

     @SuppressWarnings("deprecation")

    public static Object getBean() {

         

         try {

                 //创建DOM文档对象

                 DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();

                 DocumentBuilder builder = dFactory.newDocumentBuilder();

                 Document doc;

                 doc = builder.parse(new File("Cainiao.xml"));

                 

                 //获取包含类名的文本节点

                 NodeList nl = doc.getElementsByTagName("className");

                 Node classNode = nl.item(0).getFirstChild();

                 String cName = classNode.getNodeValue();

                 

                 //通过类名生成实例对象返回

                 Class c = Class.forName("chouxiang."+cName);

                 Object obj = c.newInstance();

                 return obj;

         } catch (Exception e) {

             e.printStackTrace();

             return null;

         }

         

     }

     

 }

 

YellowFactory.java

package moshi;

 

public class YellowFactory {

 

    public Man produceMan()

    {

        return new YellowSkinMan();

    }

 

    public Woman produceWomen()

    {

        return new YellowSkinWomen();

    }

}

 

YellowSkinMan.java

package moshi;

 

public class YellowSkinMan implements Man{

    public void play()

    {

        System.out.println("我是黄种男人!");

    }

}

 

YellowSkinWomen.java

package moshi;

 

public class YellowSkinWomen implements Woman{

    public void play()

    {

        System.out.println("我是黄种女人!");

    }

}

posted @   liu_ru_jun  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示