针对问题:和工厂方法模式类似,用一个继承体系来实现创建对象的多变性。不同的是,抽象工厂模式针对的是产品族(许多个产品).
抽象工厂模式结构图:
抽象工厂模式实现代码:
/**
* 产品A接口
* @author bruce
*
*/
public abstract class ProductA {
public abstract void descriptionA();
}
/**
* 产品B接口
* @author bruce
*
*/
public abstract class ProductB {
public abstract void descriptionB();
}
/**
* 创建者接口
* @author bruce
*
*/
public abstract class Creator {
public abstract ProductA createProductA();
public abstract ProductB createProductB();
}
/**
* 产品A1(产品A)
* @author bruce
*
*/
public class ProductA1 extends ProductA{
@Override
public void descriptionA() {
// TODO Auto-generated method stub
System.out.println("ProductA:ProductA1");
}
}
/**
* 产品A2(产品A)
* @author bruce
*
*/
public class ProductA2 extends ProductA{
@Override
public void descriptionA() {
// TODO Auto-generated method stub
System.out.println("ProductA:ProductA2");
}
}
/**
* 产品B1(产品B)
* @author bruce
*
*/
public class ProductB1 extends ProductB{
@Override
public void descriptionB() {
// TODO Auto-generated method stub
System.out.println("ProductB:ProductB1");
}
}
/**
* 产品B2(产品B)
* @author bruce
*
*/
public class ProductB2 extends ProductB{
@Override
public void descriptionB() {
// TODO Auto-generated method stub
System.out.println("ProductB:ProductB2");
}
}
/**
* 创建类1
* @author bruce
*
*/
public class ConcreteCreator1 extends Creator{
@Override
public ProductA createProductA() {
// TODO Auto-generated method stub
return new ProductA1();
}
@Override
public ProductB createProductB() {
// TODO Auto-generated method stub
return new ProductB1();
}
}
/**
* 创建者2
* @author bruce
*
*/
public class ConcreteCreator2 extends Creator{
@Override
public ProductA createProductA() {
// TODO Auto-generated method stub
return new ProductA2();
}
@Override
public ProductB createProductB() {
// TODO Auto-generated method stub
return new ProductB2();
}
}
/**
* 测试
* @author bruce
*/
public class Client {
public static void main(String[] args) {
Creator creator=new ConcreteCreator1();
ProductA pa=creator.createProductA();
ProductB pb=creator.createProductB();
pa.descriptionA(); //ProductA:ProductA1
pb.descriptionB(); //ProductB:ProductB1
creator=new ConcreteCreator2();
pa=creator.createProductA();
pb=creator.createProductB();
pa.descriptionA(); //ProductA:ProductA2
pb.descriptionB(); //ProductB:ProductB2
}
}
- 大小: 29.9 KB
分享到:
相关推荐
工厂三兄弟之抽象工厂模式(二) 工厂三兄弟之抽象工厂模式(三) 工厂三兄弟之抽象工厂模式(四) 工厂三兄弟之抽象工厂模式(五) 单例模式-Singleton Pattern 确保对象的唯一性——单例模式 (一) 确保对象的...
23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm”供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) 生成...
DesignPattern_BasicKnowledge设计模式之类关系:设计模式 类关系 基础 依赖 关联
VS2019 工程实现观察者模式和工厂模式(简单工厂、工厂方法、抽象工厂)的示例源代码,具体模式讲解请参考 https://me.csdn.net/lovemengx
C++ 23种设计模式(全_解释+源代码).zip 23种设计模式都是基于以下原则,务必记牢 依赖倒转原则 里氏代换原则 开闭原则 接口隔离原则 合成聚合复用原则 迪米特法则 23种设计模式如下:
本书已经成为面向对象技术人员的圣经和词典,书中定义的23个模式逐渐成为开发界技术交流所必备的基础知识和语汇。
DesignPattern 设计模式,共10章。内容详细,案例设计齐全。对设计可复用的面向对象的软件很有帮助,有助你写出又质量,并且可重复使用的高品质软件
JAVA design pattern-java设计模式.chm
Design Pattern: Simple Factory 模式 Design Pattern: Abstract Factory 模式 Design Pattern: Builder 模式 Design Pattern: Factory Method 模式 Design Pattern: Prototype 模式 Design Pattern: Singleton...
Design*Pattern*Framework*4.5
深入浅出设计模式 (Head First Design Pattern)_带书签 深入浅出设计模式 (Head First Design Pattern)_带书签
Mobile Design Pattern Gallery : UI Patterns for Mobile Applications原版 全彩 120M大容量《移动应用ui设计模式》是一本移动应用ui 设计模式参考书,分10 大类介绍了70 个移动应用设计模式(包括反模式),用400 ...
Theresa Neil's new book "Mobile Design Pattern Gallery" provides solutions to common design challenges. There is inspiration on every topic from designing your application's navigation to choosing ...
C语言设计模式 PDF《C Design Pattern》C语言设计模式 PDF《C Design Pattern》C语言设计模式 PDF《C Design Pattern》C语言设计模式 PDF《C Design Pattern》
Design Pattern 简明手册,设计模式查阅简明手册
JAVA software design pattern
DesignPattern 新版設計模式(C#) 講述23種設計模式: ◆結構圖 ◆生活例子 ◆意圖 ◆適用性 ◆示例代碼 ◆實際應用
GoF的经典著作设计模式(Design Pattern)
Design Pattern for dummnies