当前位置:首页 > 开发 > 编程语言 > 设计模式 > 正文

简单工厂设计模式

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

       简单工厂模式(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("我是一件安踏运动服");
	}
}

 

 

 

 

 

简单工厂设计模式

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

推荐文章
编辑推荐
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号