在简单工厂模式中,原来在客户端要做的创建和初始化工作都移到了工厂里去做,虽然把对象的创建和初始化工作与客户端分离开了,但是所有对象创建和初始化的工作还是集中在了这个具体的工厂类里,如果要创建的对象很多,这个工厂类将会非常庞大,仍然不利于后期的代码维护。
工厂方法模式相对于简单工厂模式来说,就是把一个单一的工厂类,分成了多个具体的小工厂,并抽象出一个工厂类,这个工厂类只负责定义创建的方式,创建的具体内容由继承它的小工厂类来实现。
下面是一个利用工厂方法模式创建Tiger,Dolphin,Parrot的例子。
//****Animal.java
package com.designpattern;
public interface Animal {
public void eat();
}
//****Tiger.java
package com.designpattern;
public class Tiger implements Animal {
public void run() {
System.out.println("Tiger is running!");
}
public void eat() {
System.out.println("Tiger is eating!");
}
}
//****Dolphin.java
package com.designpattern;
public class Dolphin implements Animal {
public void swim() {
System.out.println("Dolphin is swimming!");
}
public void eat() {
System.out.println("Dolphin is eating!");
}
}
//****Parrot.java
package com.designpattern;
public class Parrot implements Animal {
public void fly() {
System.out.println("Parrot is flying!");
}
public void eat() {
System.out.println("Parrot is eating!");
}
}
//****Factory.java
package com.designpattern;
public interface Factory {
public Animal createAnimal();
}
//****TigerFactory.java
package com.designpattern;
public class TigerFactory implements Factory {
public Animal createAnimal(){
return new Tiger();
}
}
//****DolphinFactory.java
package com.designpattern;
public class DolphinFactory implements Factory {
public Animal createAnimal(){
return new Dolphin();
}
}
//****ParrotFactory.java
package com.designpattern;
public class ParrotFactory implements Factory {
public Animal createAnimal(){
return new Parrot();
}
}
//****Client.java
package com.designpattern;
public class Client {
public static void main(String[] args){
Factory factory = new TigerFactory();
Animal animal = factory.createAnimal();
animal.eat();
factory = new DolphinFactory();
Animal animal = factory.createAnimal();
animal.eat();
factory = new ParrotFactory();
Animal animal = factory.createAnimal();
animal.eat();
}
}
//****输出****
Tiger is eating!
Dolphin is eating!
Parrot is eating!
总结:
工厂方法模式中,抽象工厂类负责定义创建对象的接口,具体对象的创建工作由实现抽象工厂的具体工厂类来完成。如果有新的产品加进来,只需要新增加一个具体的创建产品工厂类和具体的产品类就可以了。
分享到:
相关推荐
上市案例研习12:共同实际控制人和无实际控制人.docx
精品资料(2021-2022年收藏的)案例研习93:主要客户变动解决之道.doc
精品--大厂offer研习社:大厂求职校招社招简历内推,简历例句、项目经验模板分享、简历模板分享、面试经验分享。
互联网盈利模式研习笔记之一:流量变现.docx
个人花大量时间整理出的简历模板,内容丰富,无论是应届生,还是职场老手,都有相应的模板,节约自身时间,提升效率。 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源,包含简历模板、PPT模板、...
不该用Generics实现Abstract Factory的理由 C#2.0-泛型 C#2.0-extern C#2.0-可空类型 C#2.0-分部类 C#2.0-迭代器 C#2.0 的新增功能学习 泛型的序列化问题 .NET 2.0 泛型在实际开发中的一次小应用 C#2.0 Singleton 的...
本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,每一个章节讲解一个编程模式,说明此模式的用意、结构,...
法律英语研习资料1:THE_PATH_OF_THE_LAW.docx
功能性好理解,硬指标,开发过程中的里程碑,一定要啃下的山头,而非功能性需求更偏“软”,如App好不好用,速度快不快,设计是否反人类等。在我们的日常生活中,非核心、非会员,只要带了一个“非”字,往往都不是...
本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,每一个章节讲解一个编程模式,说明此模式的用意、结构,...
专题研习问卷设计
【内容简介】本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,每一个章节讲解一个编程模式,说明此模式的...
本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,每一个章节讲解一个编程模式,说明此模式的用意、结构,...
一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,每一个章节讲解一个编程模式,说明此模式的用意、结构,以及这...
一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,每一个章节讲解一个编程模式,说明此模式的用意、结构,以及这...
一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,每一个章节讲解一个编程模式,说明此模式的用意、结构,以及这...
本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为了工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,第一个章节讲解一个编编程模式,说明此模式的用意、...
本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,每一个章节讲解一个编程模式,说明此模式的用意、结构,...