zoukankan      html  css  js  c++  java
  • 抽象工厂模式人与肤色

    今天做了抽象工厂模式--人与肤色的实验,最终成功运行成功人与肤色的代码;

    下面是操作流程和步骤:

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

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

     

    实验要求:

    1. 画出对应的类图;

     

    2.提交源代码;

     

    Java:

    public class BlackFactory implements MWFactory

    {

     public Man produceMan()

     {

      return new BlackSkinMan();

     }

     

     public Women produceWomen()

     {

      return new BlackSkinWomen();

     }

    }

    public class BlackSkinMan implements Man

    {

     public void play()

     {

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

     }

    }

    public class BlackSkinWomen implements Women

    {

     public void play()

     {

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

     }

    }

    public class Client

    {

     public static void main(String args[])

     {

             try

             {

              MWFactory factory;

              Man m;

              Women w;

              factory=(MWFactory)XMLUtil.getBean();

              m=factory.produceMan();

              m.play();

              w=factory.produceWomen();

              w.play();

             }

             catch(Exception e)

             {

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

             }

     }

    }

    public interface Man

    {

     public void play();

    }

    public interface MWFactory

    {

     public Man produceMan();

     public Women produceWomen();

    }

    public class WhiteFactory implements MWFactory

    {

     public Man produceMan()

     {

      return new WhiteSkinMan();

     }

     

     public Women produceWomen()

     {

      return new WhiteSkinWomen();

     }

    }

    public class WhiteSkinMan implements Man

    {

     public void play()

     {

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

     }

    }

    public class WhiteSkinWomen implements Women{

      public void play()

      {

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

      } 

    }

    public interface Women

    {

     public void play();

    }

    import javax.xml.parsers.*;

    import org.w3c.dom.*;

    import org.xml.sax.SAXException;

    import java.io.*;

    public class XMLUtil

    {

    //该方法用于从XML配置文件中提取具体类类名,并返回一个实例对象

     public static Object getBean()

     {

      try

      {

       //创建文档对象

       DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();

       DocumentBuilder builder = dFactory.newDocumentBuilder();

       Document doc;       

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

      

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

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

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

                String cName=classNode.getNodeValue();

                

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

                Class c=Class.forName(cName);

            Object obj=c.newInstance();

                return obj;

               }   

                catch(Exception e)

                {

                 e.printStackTrace();

                 return null;

                }

      }

    }

    public class YellowFactory implements MWFactory

    {

     public Man produceMan()

     {

      return new YellowSkinMan();

     }

     public Women produceWomen()

     {

      return new YellowSkinWomen();

     }

    }

    public class YellowSkinMan implements Man

    {

     public void play()

     {

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

     }

    }

    public class YellowSkinWomen implements Women{

     public void play()

     {

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

     }

     运行截图:

  • 相关阅读:
    Android成长之路-LayoutInflater和inflate的用法
    Android成长之路-实现简单动画
    Android成长之路-编码实现软件界面
    Android成长之路-手势库的创建
    Android成长之路-手势识别的实现
    Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
    android中文字中间有超链接的实现方法
    Arduino可穿戴教程ArduinoIDE新建编辑源文件
    FMDB使用SQLite事务Save Point
    FMDB使用Cached Statement功能
  • 原文地址:https://www.cnblogs.com/092e/p/15530633.html
Copyright © 2011-2022 走看看