设计模式回顾系列文章:主要针对工作中常用常见的设计模式进行整理、总结,同时分享以供大家拍砖。
------------------------------------------------
抽象工厂模式(Abstract Factory)
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
适用于:
一个系统要独立于它的产品的创建、组合和表示时。
一个系统要由多个产品系列中的一个来配置时。
当你要强调一系列相关的产品对象的设计以便进行联合使用时。
当你提供一个产品类库,而只想显示它们的接口而不是实现时。
程序实现:
抽象类:
public abstract class DPDocument {
abstract public void dump();
}
public abstract class DPWorkspace {
abstract public void dump();
}
public abstract class DPView {
abstract public void dump();
}
抽象工厂类:
public abstract class DPFactory {
abstract public DPDocument createDocument();
abstract public DPView createView();
abstract public DPWorkspace createWorkspace();
}
构建:
public abstract class DPApplication {
protected DPDocument doc;
protected DPWorkspace workspace;
protected DPView view;
public void constructObjects(DPFactory factory){
doc = factory.createDocument();
workspace = factory.createWorkspace();
view = factory.createView();
}
abstract public void dump();
public void dumpState(){
if (doc != null) doc.dump();
if (workspace != null) workspace.dump();
if (view != null) view.dump();
}
}
实现类:
public class MyDocument extends DPDocument{
public MyDocument(){
System.out.println("in MyDocument constructor");
}
@Override
public void dump(){
System.out.println("MyDocument exists");
}
}
public class MyWorkspace extends DPWorkspace{
public MyWorkspace(){
System.out.println("in MyWorkspace constructor");
}
@Override
public void dump(){
System.out.println("MyWorkspace exists");
}
}
public class MyView extends DPView{
public MyView(){
System.out.println("in MyWorkspace constructor");
}
@Override
public void dump() {
System.out.println("MyView exists");
}
}
具体工厂:
public class MyFactory extends DPFactory{
@Override
public DPDocument createDocument() {
return new MyDocument();
}
@Override
public DPView createView() {
return new MyView();
}
@Override
public DPWorkspace createWorkspace() {
return new MyWorkspace();
}
}
使用具体工厂创建:
public class MyApplication extends DPApplication{
MyFactory myFactory = new MyFactory();
@Override
public void dump() {
System.out.println("MyApplication exists");
}
public void createFamily(){
myFactory = new MyFactory();
constructObjects(myFactory);
}
}
客户端:
public static void main(String[] args) {
MyApplication myApplication = new MyApplication();
myApplication.createFamily();
myApplication.dumpState();
myApplication.dump();
}
抽象工厂模式,更新中...
分享到:
相关推荐
设计模式C++学习之抽象工厂模式(AbstractFactory)
博客 走进设计模式之抽象工厂(Abstract Factory) 对应代码
这就是我们要说的抽象工厂模式。提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。逻辑模型:物理模型:抽象工厂的目的是要提供一个创建一系列相关或相互依赖对象的接口,而不需要指定它们具体...
要好好去读上面那个实例,虽然有点绕嘴,其实只要用心去读,分清了抽象工厂模式的各个角色,对理解设计模式是非常重要的。理解头绪,然后接合简单工厂模式、工厂方法模式对工厂家族的了解,再加上抽象工厂模式的意图...
设计模式抽象工厂模式(AbstractFactory)源代码
设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)
C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式) (Level 300)
C#设计模式之抽象工厂(abstract factory)模式示例源代码
C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式) 体验课程
C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)
Abstract Factory模式 1 定义创建对象的接口,并封装对象的创建 2 将具体化类的工作延迟到了类中 3 创建创建一组相关对象或者说是一组相互依赖的对象 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来...
C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式),.net常用设计模式。
抽象工厂模式可以实现不同数据库之间的无缝移植。 该项目是在三层架构的基础上改进的。希望对初学者有帮助。
NULL 博文链接:https://zhouhaitao.iteye.com/blog/1003684
设计模式,AbstractFactory,抽象工厂模式
本文实例讲述了Python设计模式之抽象工厂模式原理与用法。分享给大家供大家参考,具体如下: 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的类 下面是一个...
在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),...这就是我们要说的抽象工厂模式。
NULL 博文链接:https://jacky-dai.iteye.com/blog/2294531