Android开发 设计模式 (三、Abstract Factory(抽象工厂模式))
2015-11-15 16:16
513 查看
三、Abstract Factory(抽象工厂模式)
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。现在接着制造宝马车,随着客户的要求越来越高,宝马车需要不同配置的空调和发动机等配件。于是这个工厂开始生产空调和发动机,用来组装汽车。工厂有两个系列的产品:空调和发动机。宝马X5系列配置A型号空调和A型号发动机,宝马X6系列配置B型号空调和B型号发动机。
产品类:
// BMW.java
public abstract class BMW {
publicBMW(){
}
}
// BMWX5.java
public class BMWX5 extends BMW {
publicBMWX5() {
System.out.println("制造一辆宝马X5");
}
}
// BMWX6.java
public class BMWX6 extends BMW{
publicBMWX6(){
System.out.println("制造一辆宝马X6");
}
}
// Engine.java
public abstract class Engine {}
// EngineA.java
public class EngineA extendsEngine{
public EngineA(){
System.out.println("制造一台发动机A");
}
}
// EngineB.java
public class EngineB extendsEngine{
public EngineB(){
System.out.println("制造一台发动机B");
}
}
// Aircondition.java
public abstract classAircondition {}
// AirconditionA.java
public class AirconditionAextends Aircondition{
public AirconditionA(){
System.out.println("制造一台空调A");
}
}
// AirconditionB.java
public class AirconditionBextends Aircondition{
public AirconditionB(){
System.out.println("制造一台空调B");
}
}
工厂类:
// FactoryBMW.java
public interface FactoryBMW {
BMWcreateBMW_A();
BMWcreateBMW_B();
AirconditioncreateaAirconditionA();
AirconditioncreateaAirconditionB();
}
// FactoryBWMX5.java
//宝马X5系列:生产配置A,B两种空调型号的X5汽车
public class FactoryBWMX5implements FactoryBMW{
publicBMWX5 createBMW_A() {
createaAirconditionA();
returnnew BMWX5();
}
publicBMWX5 createBMW_B() {
createaAirconditionB();
returnnew BMWX5();
}
publicAircondition createaAirconditionA() {
returnnew AirconditionA();
}
publicAircondition createaAirconditionB() {
returnnew AirconditionB();
}
}
// FactoryBWMX6.java
//宝马X6系列,生产配置A,B两种空调型号的X6汽车
public class FactoryBWMX6implements FactoryBMW {
publicBMWX6 createBMW_A() {
createaAirconditionA();
returnnew BMWX6();
}
publicBMWX6 createBMW_B() {
createaAirconditionB();
returnnew BMWX6();
}
publicAircondition createaAirconditionA() {
returnnew AirconditionA();
}
publicAircondition createaAirconditionB() {
returnnew AirconditionB();
}
}
客户类:
// Customer.java
public class Customer {
publicstatic void main(String[] args){
//想要A型空调宝马X5
FactoryBWMX5factoryBWMX5_A = new FactoryBWMX5();
BMWX5x5_A = factoryBWMX5_A.createBMW_A();
//想要B型空调宝马X5
FactoryBWMX5factoryBWMX5_B = new FactoryBWMX5();
BMWX5x5_B = factoryBWMX5_B.createBMW_B();
//想要A型空调宝马X6
FactoryBWMX6factoryBWMX6_A = new FactoryBWMX6();
BMWX6x6_A = factoryBWMX6_A.createBMW_A();
//想要B型空调宝马X6
FactoryBWMX6factoryBWMX6_B = new FactoryBWMX6();
BMWX6x6_B = factoryBWMX6_B.createBMW_B();
}
}
相关文章推荐
- AndroidStudio问题记录:sRGB warning
- android跨进程通信(IPC):使用AIDL
- new android xml file时root element没有menu选项
- Java for android – Instanceof
- android加了进度条和进度文本多线程断点续传下载
- android 界面转换startActivity
- android获取一个用于打开Word文件的intent
- 36.Android 自定义ContentProvider
- Android Service串行服务:IntentService(系列3)
- Android:线性布局(LinearFrame)例子
- android Picker选择器
- Android:match_parent,fill_parent,wrap_content的区别
- [Android] Android开发优化之——对Bitmap的内存优化
- Android开发 设计模式(二、 Factory Method(工厂方法模式))
- android 98 MediaPlayer+SurfaceView播放视频
- [Android] Android开发优化之——从代码角度进行优化
- Android:Broadcast广播
- [Android] Android开发优化之——使用软引用和弱引用
- Android:Service简介(系列1)
- Android之可伸缩的皮筋效果(贝塞尔曲线)的介绍