很久前就像看看设计模式了,在此记录下自己的学习过程。
设计模式分为三种:静态工厂模式,工厂方法模式,抽象工厂模式。其中抽象工厂模式是三个里面最抽象的,也是最具有一般性的。
在看教程的同时,花了一上午时间写了个例子。
例子配置如图:
我认为比较重要的事:有几个产品,抽象工厂中就有几个方法;有几个产品族,就应该有几个具体的工厂类。(有什么不对的地方希望给予指出)
代码如下:
抽象工厂:
package com.topnet.af.exercise.auto;
import com.topnet.af.exercise.auto.benz.BenzAuto;
import com.topnet.af.exercise.auto.bmw.BmwAuto;
/**
* 生产产品的接口(抽象类),
有几种产品,就有几个方法
* @author anfei
*
*/
public interface Factory {
//生产宝马方法
public BmwAuto factoryBmw();
//生产奔驰方法
public BenzAuto factoryBenz();
}
具体工厂类:
package com.topnet.af.exercise.auto;
import com.topnet.af.exercise.auto.benz.BenzAuto;
import com.topnet.af.exercise.auto.benz.SportBenzAuto;
import com.topnet.af.exercise.auto.bmw.BmwAuto;
import com.topnet.af.exercise.auto.bmw.SportBwmAuto;
/**
* 生产跑车型车具体工厂类,
有几种产品族,就有个具体工厂类 * @author anfei
*
*/
public class FactorySport implements Factory {
public BmwAuto factoryBmw() {
return new SportBwmAuto();
}
public BenzAuto factoryBenz() {
return new SportBenzAuto();
}
}
package com.topnet.af.exercise.auto;
import com.topnet.af.exercise.auto.benz.BenzAuto;
import com.topnet.af.exercise.auto.benz.BusinessBenzAuto;
import com.topnet.af.exercise.auto.bmw.BusinessBwmAuto;
import com.topnet.af.exercise.auto.bmw.BmwAuto;
/**
* 生产商务型车具体工厂类,
有几种产品族,就有几个具体工厂类 * @author anfei
*
*/
public class FactoryBusiness implements Factory {
public BmwAuto factoryBmw() {
return new BusinessBwmAuto();
}
public BenzAuto factoryBenz() {
return new BusinessBenzAuto();
}
}
抽象产品类:
package com.topnet.af.exercise.auto.bmw;
public interface BmwAuto {//奔驰
public void showFunction();
}
package com.topnet.af.exercise.auto.benz;
public interface BenzAuto {//宝马
public void showFunction();
}
具体产品类:
package com.topnet.af.exercise.auto.benz;
public class BusinessBenzAuto implements BenzAuto {
public void showFunction() {
System.out.println("奔驰商务车");
}
}
package com.topnet.af.exercise.auto.benz;
public class SportBenzAuto implements BenzAuto {
public void showFunction() {
System.out.println("奔驰跑车");
}
}
package com.topnet.af.exercise.auto.bmw;
public class BusinessBwmAuto implements BmwAuto {
public void showFunction() {
System.out.println("宝马商务车");
}
}
package com.topnet.af.exercise.auto.bmw;
public class SportBwmAuto implements BmwAuto {
public void showFunction() {
System.out.println("宝马跑车");
}
}
测试类:
package com.topnet.af.exercise.auto;
import com.topnet.af.exercise.auto.benz.BenzAuto;
import com.topnet.af.exercise.auto.benz.SportBenzAuto;
import com.topnet.af.exercise.auto.bmw.BmwAuto;
/**
* 调用类
* @author anfei
*
*/
public class Magnate {
public static void main(String[] args) {
//跑车型工厂
Factory fs = new FactorySport();
//商务型工厂
Factory fb = new FactoryBusiness();
//奔驰
BenzAuto benz;
benz = fs.factoryBenz();
benz.showFunction();
benz = fb.factoryBenz();
benz.showFunction();
System.out.println("-----------------------");
//宝马
BmwAuto bmw;
bmw = fs.factoryBmw();
bmw.showFunction();
bmw = fb.factoryBmw();
bmw.showFunction();
}
}
输出结果:
奔驰跑车
奔驰商务车
-----------------------
宝马跑车
宝马商务车
分享到:
相关推荐
java设计模式 抽象工厂模式详解 一张图让你彻底明白抽象工厂模式
介绍的是工厂模式 包括简单工厂模式、工厂方法模式、抽象工厂模式 包括PPT和代码
设计模式-抽象工厂模式(讲解及其实现代码)
工厂方法模式和抽象工厂模式的区别,对工厂方法模式和抽象工厂模式做了简单的比较
深入浅出设计模式之抽象工厂模式+工厂方法模式+策略模式实现手机加工厂(加类图)
抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式
抽象工厂模式ppt。抽象工厂模式ppt。抽象工厂模式ppt。
JAVA设计模式之抽象工厂模式,一个不错的列子,逻辑比好清晰,让你更好的理解抽象工厂
设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂...
1、抽象工厂模式+反射技术 2、抽象工厂模式+简单工厂模式 3、仅仅是抽象工厂模式
设计模式--抽象工厂模式实现多数据库连接 设计模式,.net设计模式,抽象工厂
抽象工厂模式抽象工厂模式抽象工厂模式抽象工厂模式抽象工厂模式抽象工厂模式
设计模式,AbstractFactory,抽象工厂模式
抽象工厂模式代码示例,使用JAVA代码演示。配有说明文档,有助于对抽象工厂模式的理解。
设计模式 抽象工厂模式 三层架构 设计模式 抽象工厂模式 三层架构 设计模式 抽象工厂模式 三层架构 设计模式 抽象工厂模式 三层架构 设计模式 抽象工厂模式 三层架构 要您一个资源分,也算是对我的尊重,谢谢下载。
抽象工厂模式.ppt抽象工厂模式.ppt
通过C++实现了简单工厂模式、工厂模式、抽象工厂模式三大设计模式的经典案例。
抽象工厂模式实现计算器源码,学习C#设计模式。
本文章通俗易懂的对工厂模式进行了讲解,相信您看完这篇文章会对工厂模式有更深入的了解