简单工厂模式

意图: 简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。

简单工厂模式是由一个工厂对象决定创建出那一种产品类的实例。

通常它根据自变量的不同返回不同的类的实例。

 

适用性:简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建出哪一个产品类的实例。

 

工厂类(Creater)角色:担任这个角色的是简单工厂模式的核心,含有与应用紧密相关的商业逻辑。

工厂类在客户端的直接调用下创建产品对象,它往往由一个具体类实现。

 

抽象产品(Product)角色:担任这个角色的类是简单工厂模式所创建的对象的父类,或它们共同拥有的接口。

抽象产品角色可以用一个接口或者抽象类实现。

 

具体产品(Concrete Product)角色:简单工厂模式所创建的如何对象都是这个角色的实例,具体产品角色有一个具体类实现。

 

 

抽象产品(Product)角色

 

public interface Person {
	
	public String sayHello(String name);
	
	public String sayGoodBye(String name);
}

 

 

具体产品(Concrete Product)角色

 

public class Chinese implements Person {

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

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

}

 

 

public class American implements Person {

	@Override
	public String sayGoodBye(String name) {
		// TODO Auto-generated method stub
		return "Good Bye," + name;
	}

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

}

 

 

工厂类(Creater)角色

 

public class Factory {
	
	public Person getFactory(String objectName){
		if("chinese".equals(objectName)){
			return new Chinese();
		}else if("american".equals(objectName)){
			return new American();
		}else{
			return null;
		}
	}
}

 

 

 

	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 american = new American();
		System.out.println(american.sayHello("Tom"));
		System.out.println(american.sayGoodBye("Tom"));*/
		
		
		//使用工厂设计模式
		Factory factory = new Factory();
		Person chinese=factory.getFactory("chinese");
		System.out.println(chinese.sayHello("张三"));
		System.out.println(chinese.sayGoodBye("张三"));
		
		Person american=factory.getFactory("american");
		System.out.println(american.sayHello("Tom"));
		System.out.println(american.sayGoodBye("Tom"));
		
	}

}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值