sampleFactory(女娲造人)

使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象。

 

 

package create;

 

import create.People;

import create.PeopleFactory;

import create.XMLUtilPeople;

 

public class Client {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

 try

         {

          People pe;

          String createName=XMLUtilPeople.getCreateName();

          pe=PeopleFactory.producePeople(createName);

          pe.play();

         }

         catch(Exception e)

         {

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

         }

}

 

}

 

 

package create;

 

import create.People;

 

public class Man implements People

{

public void play()

{

System.out.println("Man");

}

}

 

 

package create;

 

public interface People

{

public void play();

}

 

 

package create;

 

import create.Man;

import create.Women;

import create.People;

import create.Robot;

 

public class PeopleFactory {

public static People producePeople(String create) throws Exception

{

if(create.equalsIgnoreCase("M"))

{

System.out.println("Man");

return new Man();

}

else if(create.equalsIgnoreCase("W"))

{

System.out.println("Women");

return new Women();

}

else if(create.equalsIgnoreCase("R"))

{

System.out.println("Robot");

return new Robot();

}

else

{

throw new Exception("对不起,女娲不在,暂不能生产该类型的人或机器!!");

}

}

}

 

 

package create;

 

 

public class Robot implements People

{

public void play()

{

System.out.println("Robot");

}

}

 

 

package create;

 

 

public class Women implements People

{

public void play()

{

System.out.println("Women");

}

}

 

 

package create;

import java.io.File;

 

import javax.xml.parsers.*;

 

import org.w3c.dom.Document;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

public class XMLUtilPeople {

//该方法用于从XML配置文件中提取品牌名称,并返回该品牌名称

public static String getCreateName()

{

try

{

//创建文档对象

DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = dFactory.newDocumentBuilder();

Document doc;

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

 

//获取包含品牌名称的文本节点

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

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

            String createName=classNode.getNodeValue().trim();

            return createName;

           }   

            catch(Exception e)

            {

            e.printStackTrace();

            return null;

            }

}

}

sampleFactory类说明

People抽象产品类,它可以是一个接口,也可以是一个抽象类,其中包含了所有产品具有的业务方法。

具体产品类(Many、Women、Robot)是抽象产品类People接口的子类,是一种具体产品,实现了在People接口中定义的业务方法。

工厂类PeopleFactory,是工厂类,它是整个系统的核心,它提供了静态工厂方法producePeople()工厂方法中包含一个字符串类型的参数,在内部业务逻辑根据参数值的不同实例化不同的具体产品类,返回相应的对象。

转载于:https://www.cnblogs.com/revenge/p/4873121.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我们来看一下如何使用建者模式在 Java 中实现女人。 首先,我们需要先定义一个人类的基本属性,例如姓名、性别、年龄等等。这些属性可以组成一个 Person 类: ```java public class Person { private String name; private String gender; private int age; public Person(String name, String gender, int age) { this.name = name; this.gender = gender; this.age = age; } // 省略 getter 和 setter 方法 } ``` 接下来,我们需要定义一个 Builder 类,用于构建 Person 对象。Builder 类需要包含和 Person 类相同的属性,同时还需要提供一些方法来设置这些属性: ```java public class PersonBuilder { private String name; private String gender; private int age; public PersonBuilder setName(String name) { this.name = name; return this; } public PersonBuilder setGender(String gender) { this.gender = gender; return this; } public PersonBuilder setAge(int age) { this.age = age; return this; } public Person build() { return new Person(name, gender, age); } } ``` 在 Builder 类中,我们提供了三个方法来设置 Person 的属性,并且每个方法都返回 Builder 对象本身,这样就可以链式调用多个方法来设置属性。最后,我们还提供了一个 build 方法来构建 Person 对象。 接下来,我们就可以使用 Builder 类来构建 Person 对象了: ```java Person person = new PersonBuilder() .setName("张三") .setGender("男") .setAge(20) .build(); ``` 这里我们首先创建了一个 PersonBuilder 对象,然后链式调用 setName、setGender 和 setAge 方法来设置属性,最后调用 build 方法来构建 Person 对象。 这就是使用建者模式在 Java 中实现女人的方法。建者模式可以让代码更加清晰、简洁,并且易于扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值