primos's blog

Write your goals clearly. Post them in eyeball view of where you work most.

设计模式 (二)工厂方法模式(FactoryMethod)

工厂方法模式原理图:

具体实现代码:

package com.designpattern.factorymethod;

public interface FactoryMethod {
	public Animal createAnimal();
}

package com.designpattern.factorymethod;

public class DolphinFactory implements FactoryMethod {

	@Override
	public Animal createAnimal() {
		return new Dolphin();
	}

}

package com.designpattern.factorymethod;

public class TigerFactory implements FactoryMethod {

	@Override
	public Animal createAnimal() {
		return new Tiger();
	}

}

package com.designpattern.factorymethod;

public interface Animal {
	public void eat();
}

package com.designpattern.factorymethod;

public class Dolphin implements Animal {

	@Override
	public void eat() {
		System.out.println("Dolphin is eating");
	}

	public void swim() {
		System.out.println("Dolphin is swimming");
	}

}

package com.designpattern.factorymethod;

public class Tiger implements Animal {

	@Override
	public void eat() {
		System.out.println("Tiger is eating");
	}

	public void run() {
		System.out.println("Tiger is running");
	}

}

package com.designpattern.factorymethod;

public class Client {

	public static void main(String[] args) {
		FactoryMethod factory = new TigerFactory();
		Animal tiger = factory.createAnimal();
		tiger.eat();

		factory = new DolphinFactory();
		Animal dolphin = factory.createAnimal();
		dolphin.eat();
	}
}

在工厂方法模式中,客户端不在负责对象的创建,而是把这个责任交给了具体的工厂类,客户端只负责对象的调用,从而明确各个类的职责。

如果有新的产品加进来,只需要新增加一个具体的创建产品的工厂类和具体的产品类就可以了,不会影响但原来的其他的代码,代码量也不会变大,后期维护更加容易,增强了系统的可扩展性。

但是使用这个模式的时候而外地编写代码,增加了工作量。

阅读更多
个人分类: java.patterndesign
所属专栏: 初学设计模式
上一篇设计模式 (一)简单工厂模式(SimpleFatory)
下一篇Apache Tomcat(一)Apache Tomcat的简单介绍
想对作者说点什么? 我来说一句

工厂方法模式

2012年02月17日 340KB 下载

没有更多推荐了,返回首页

关闭
关闭