设计模式 (一)简单工厂模式(SimpleFatory)

原创 2012年03月30日 23:22:37

一点点从基础做起,23中设计模式一天看一个

首先学习了一个UML,但是没有能下到RationalRose,想去官网上下载,但是似乎收费,索性就用手头上的StartUML,其实就是一个工具,能实现就行了

SimpleFactory——简单设计模式原理图




package com.designpattern.simplefactory;

public class Client {

	public static void main(String[] args) {
		Animal tiger = SimpleFactory.createAnimal("Tiger");
		tiger.eat();
		Animal dolphin = SimpleFactory.createAnimal("Dolphin");
		dolphin.eat();
	}
}

package com.designpattern.simplefactory;

public class SimpleFactory {
	public static Animal createAnimal(String animalName) {
		if ("Tiger".equals(animalName)) {
			return new Tiger();
		} else if ("Dolphin".equals(animalName)) {
			return new Dolphin();
		}
		return null;
	}
}

package com.designpattern.simplefactory;

public interface Animal {
	public void eat();
}

package com.designpattern.simplefactory;

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.simplefactory;

public class Tiger implements Animal {

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

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

}

简单工厂设计模式中,客户端不在负责对象的创建,而是把这个任务丢给了具体的工厂类,客户端置负责对对象的简单的调用,从而明确了各个类的职责。

由于简单的工厂模式使用静态的方法来创建对象,这就导致了静态方法无法被继承。另一方面,这个工厂类负责所有对象的创建,这回导致虽然具体的产品的不断增多,可能客户端对于某些产品的创建方式会有不同的要求,这样的话,就要不断的修改工厂类,增加了相应的判断逻辑,不利于后期的维护。

其实从这个简单的工厂模式的原理可以看出,原来在客户端要做的创建和初始化工作都被移到了工厂里去做,这样做,虽然是把创建对象和初始化工作于客户端分离了,实现了这部分的责任分配,但所有对象创建和初始化的工作还是都集中在了这个具体的工厂类里面,这样如果要创建的对象很多,这个工厂将会非常庞大,仍然不利于后期代码的维护。因此简单工厂模式只是使用与要创建的对象比较少和简单的时候,因此这个设计模式看一下过去就行了,也没有必要再这个上面下多大功夫,毕竟还是比较简单的东西,如果多了怎么办呢,这样就到了期待的下一个设计模式Factory Method

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

设计模式 (一)简单工厂模式(SimpleFatory)

一点点从基础做起,23中设计模式一天看一个 首先学习了一个UML,但是没有能下到RationalRose,想去官网上下载,但是似乎收费,索性就用手头上的StartUML,其实就是一个工具,能实现...

设计模式 (一)简单工厂模式(SimpleFatory)

一点点从基础做起,23中设计模式一天看一个 首先学习了一个UML,但是没有能下到RationalRose,想去官网上下载,但是似乎收费,索性就用手头上的StartUML,其实就是一个工具,能实现就行...

设计模式之简单工厂模式(fyun研究历程)

fyun之我见之简单工厂模式 一直以来对设计模式接触都很多,但从来没有好好的将其归纳与分析,导致自己在使用和知识积累过程中总找不到一个可以好好的拿来给人分享及培训的东西。这里我将通过将GOF的23中...

java设计模式大话之简单工厂模式

在很早之前,我们的生活资料大都是自己生产,自给自足,效率比较低下,后来工业革命后机械的运用,生产效率大大提高,工厂的产生,大大满足我们的生活所需,我们就用一个工厂的例子来演示简单工厂模式的运用场景以及...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)