在前一篇介绍简单工厂模式中大家大家知道,要产生具体水果对象就必须去FriutFactory这个类中产生。这个类是一个水果的工厂。这个水果本身就是一个抽象概念。随着具体水果的增加和丰富,可能要更改FriutFactory这个类就比较频繁。因此工厂设计模式就在简单工厂设计模式上进行再次的抽象。这次抽象将按照具体的水果来进行抽象。比如苹果,那么就设计一个苹果工厂类,这个苹果工厂类就专门用来产生苹果对象。而联系到现实时候中工作分工的细化是一样的道理。
下面直接看源码
//水果接口
public interface Fruit {
/*
* 采集水果
*/
public void get();
}
//具体的水果苹果实现水果的接口
public class Apple implements Fruit{
public void get(){
System.out.println("采集苹果");
}
}
//具体的水果香蕉实现水果的接口
public class Banana implements Fruit{
public void get(){
System.out.println("采集香蕉");
}
}
//产生水果的工厂
public interface FruitFactory {
public Fruit getFruit();
}
//苹果类工厂,用于产生具体的苹果对象
public class AppleFactory implements FruitFactory {
public Fruit getFruit() {
return new Apple();
}
}
//香蕉类工厂,用于产生具体的香蕉对象
public class BananaFactory implements FruitFactory {
public Fruit getFruit() {
return new Banana();
}
}
如果该果园最新又种植类李子。则以上代码不需要任何更改,只需加如下代码
// 李子
public class Pear implements Fruit {
public void get() {
System.out.println("采集李子");
}
}
//产生李子对象的工厂,增加不影响和不改动之前的代码
public class PearFactory implements FruitFactory {
public Fruit getFruit() {
return new Pear();
}
}
Client端代码
public class Client{
public static void main(String[] args) {
//实例化AppleFactory
FruitFactory ff = new AppleFactory();
Fruit apple = ff.getFruit();
apple.get();
FruitFactory ff2 = new BananaFactory();
Fruit banana = ff2.getFruit();
banana.get();
FruitFactory ff3 = new PearFactory();
Fruit pear = ff3.getFruit();
pear.get();
}
}
以上代码就实现类工厂模式。你可以通过对比简单工厂模式和工厂模式来进行理解。工厂模式更具有扩展性。同时它对原有代码几乎是不变动的。
分享到:
相关推荐
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式
设计模式 c# 工厂方法模式
设计模式之禅之 工厂方法模式+策略模式 设计模式之禅之 工厂方法模式+策略模式
设计模式 java 工厂系列
细心整合和单例模式和工厂模式的几种模型,懒汉式,饿汉式,如何并发操作模式,等都有详细讲解
设计模式之工厂模式Java实现和类设计图,包括简单工厂模式、工厂方法模式和抽象工厂模式
设计模式之工厂方法、简单工厂、抽象工厂
IOS 设计模式抽象工厂实例Demo IOS 设计 模式 抽象 工厂
设计模式之简单工厂模式,有文档解说,有代码案例。很适合初学者学习!
Java设计模式之工厂模式 Java设计模式之工厂模式
三种设计模式:简单工厂/工厂方法/抽象工厂,通过一个教研室购买电脑的例子来进行讲述区别和联系,可以参考我的博客进行阅读。谢谢你的指正。
c++设计模式-创建型模式-工厂方法模式-最简单的源码-qt工程
这个是http://blog.csdn.net/dawanganban/article/details/9877593博客中java设计模式的源代码。下载前请先看《设计模式——工厂方法模式》一文。
设计模式(工厂模式):通过工厂模式生产不同的汽车,如宝马、奇瑞QQ
该资源详细介绍了工厂模式
设计模式专题之(三)抽象工厂模式---设计模式抽象工厂模式示例代码(python--c++)
将《Head First 设计模式》(中文版)按章节进行了分割,每章一个文件,方便大家下载。
设计模式之简单工厂模式案例