设计模式之简单工厂模式java示例

简单工厂模式的构成
  1、工厂类角色:担任这个角色的是简单工厂模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,他往往由一个具体类实现。
   2、抽象产品角色:担任这个角色的类是简单工厂模式所创建的对象的父类,或他们共同拥有的接口。抽象产品角色可以用一个接口或者抽象类实现。
  3、具体产品角色:简单工厂模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体类实现。


工厂类角色:PersonFactory.java
package com.test.simplefactory;
public class PersonFactory {
public Person getPerson(String name)
{
  if("america".equals(name))
  {
   return new America();
  }
  else if ("chinese".equals(name))
  {
   return new Chinese();
  }
  else
  {
   return null;
  }
}
}
 

抽象产品角色:person.java
package com.test.simplefactory;
public interface Person {
public String sayHello(String name);
public String sayGoodbye(String name);
}

具体产品角色:
Chinese.java
package com.test.simplefactory;
public class Chinese implements Person {

public String sayGoodbye(String name) {
  // TODO Auto-generated method stub
  return "再见,"+name;
}

public String sayHello(String name) {
  // TODO Auto-generated method stub
  return "你好,"+name;
}
}

America.java
package com.test.simplefactory;
public class America implements Person {

public String sayGoodbye(String name) {
  // TODO Auto-generated method stub
  return "good bye,"+name;
}

public String sayHello(String name) {
  // TODO Auto-generated method stub
  return "hello,"+name;
}
}
 

测试客户端:Client.java
package com.test.simplefactory;
public class Client {
/**
  * @param args
  */
/**
  * 简单工厂模式的构成
  * 1、工厂类角色:担任这个角色的是简单工厂模式的核心,含有与应用紧密相关的商业逻辑。
  *   工厂类在客户端的直接调用下创建产品对象,他往往由一个具体类实现。
  * 2、抽象产品角色:担任这个角色的类是简单工厂模式所创建的对象的父类,或他们共同拥有的接口。抽象产品角色可以用一个接口或者抽象类实现。
  * 3、简单工厂模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体类实现。
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
/*  Person chinese = new Chinese();  
  System.out.println(chinese.sayHello("张三"));
  System.out.println(chinese.sayGoodbye("张三"));
  
  Person america= new America();
  System.out.println(america.sayHello("Tom"));
  System.out.println(america.sayGoodbye("Tom"));*/
  
  //采用工厂模式后,我们不在关心Chinese类和America类,只需要传入相应参数即可。
  
  PersonFactory factory = new PersonFactory();
  Person chinese = factory.getPerson("chinese");//工厂类负责生成一个具体对象
  System.out.println(chinese.sayHello("张三"));
  System.out.println(chinese.sayGoodbye("张三"));
  
  Person america = factory.getPerson("america");//工厂类负责生成一个具体对象
  System.out.println(america.sayHello("Tom"));
  System.out.println(america.sayGoodbye("Tom"));
  
}
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值