• 抽象工厂模式人与肤色


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

    下面是操作流程和步骤:

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

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

     

    实验要求:

    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("我是黄种女人!");

     }

     运行截图:

  • 相关阅读:
    PHP操作redis
    鼠标失去焦点处理办法
    关于HTTP协议,一篇就够了
    什么是 CDN(超形象)
    网站部署之~阿里云系列汇总
    阿里云系列——6.给你的域名使用CDN加速(详细步骤+简单配置)
    mysql备份与还原
    .NET框架之“小马过河”
    .NET使用Bogus生成大量随机数据
    .NET中的值类型与引用类型
  • 原文地址:https://www.cnblogs.com/092e/p/15530633.html
Copyright © 2020-2023  润新知