`
hm4123660
  • 浏览: 278352 次
  • 性别: Icon_minigender_1
  • 来自: 广州
博客专栏
Dea4ce76-f328-3ab2-b24a-fb268e1eeb75
数据结构
浏览量:69072
社区版块
存档分类
最新评论

简单工厂设计模式

阅读更多

       简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式。是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

      简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。

没有工厂模式时创建对象如下:

package com.longpo;

public class Factory {

	public static void main(String[] args) {
		
		//没工厂时创建对象
		shoes ok=new shoes();
		ok.desc();
		
		clothes ok1=new clothes();
		ok1.desc();

	}

}

class shoes{
	
	public void desc()
	{
		System.out.println("我是一对阿迪达斯篮球鞋");
	}
}

class clothes{
	public void desc()
	{
		System.out.println("我是一件安踏运动服");
	}
}

 

    此时是直接依赖关系,当被调用者发生变化时,会直接影响调用者,耦合性太高,使用工厂模式,能降低耦合性

 

引入工厂模式,由工厂来决定创建对象实例,降低耦合度。

package com.longpo;

public class Factory {

	public static void main(String[] args) {
		
		//工厂根据需求创建对象
		goods shoesGoods=myFactory.getInstance("shoes");
		if(shoesGoods!=null)
			shoesGoods.desc();
		goods clotherGoods=myFactory.getInstance("clothes");
		if(clotherGoods!=null)
			clotherGoods.desc();

	}

}
//抽象出公共接口
interface goods{
	public void desc();
}
//工厂类
class myFactory {
	//负责创建实例对象
	public static goods getInstance(String type)
	{
		if(type.equals("shoes"))
		{
			return new shoes();
		}
		else if(type.equals("clothes"))
		{
			return new clothes();
		}
		return null;
	}
	
}
//实现接口
class shoes implements goods{
	
	public void desc()
	{
		System.out.println("我是一对阿迪达斯篮球鞋");
	}
}
//实现接口
class clothes implements goods{
	public void desc()
	{
		System.out.println("我是一件安踏运动服");
	}
}

 

 

 

 

 

4
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics