zoukankan      html  css  js  c++  java
  • 抽象工厂模式的C++、Java实现

    1、抽象工厂模式UML

    图1. 抽象工厂模式的UML

     2、C++实现

      C++实现类图为:

    图2. 抽象工厂模式的C++实现类图

      其中,AbstractFactory的实现代码为:

     1 //抽象工厂类基类。
     2 class AbstractFactory
     3 {
     4 public:
     5     AbstractFactory();
     6     ~AbstractFactory();
     7 
     8     //创建具体的产品的抽象工厂方法。
     9     //创建A类对象。
    10     virtual ProductA * CreateProductA() = 0;
    11 
    12     //创建B类产品对象。
    13     virtual ProductB * CreateProductB() = 0;
    14 };

      ConcreteFactoryA的实现代码为:

     1 class ConcreteFactory1 :
     2     public AbstractFactory
     3 {
     4 public:
     5     ConcreteFactory1();
     6     ~ConcreteFactory1();
     7 
     8     //创建ConcreteProductA1的抽象工厂方法。
     9     ProductA * CreateProductA();
    10 
    11     //创建ConcreteProductA1的抽象工厂方法。
    12     ProductB * CreateProductB();
    13 
    14 };//end class ConcreteFactoryA
    15 
    16 
    17 ProductA * ConcreteFactory1::CreateProductA()
    18 {
    19     ProductA * pa = new ConcreteProductA1();
    20     return pa;
    21 }//end method CreateProductA
    22 
    23 ProductB * ConcreteFactory1::CreateProductB()
    24 {
    25     ProductB * pb = new ConcreteProductB1();
    26     return pb;
    27 }//end method CreateProductB

      其中,ConcreteFactory2的代码与ConcreteFactory1的相似,不再列出。

    3、Java的实现

      Java实现的类视图为:

    图3. 抽象工厂模式的Java实现类视图

      其中,AbstractFactory的代码为:

     1 //抽象工厂类。
     2 public interface AbstractFactory {
     3 
     4     //创建A类产品的抽象工厂方法。
     5     public abstract ProductA CreateProductA();
     6     
     7     //创建B类产品的抽象工厂方法。
     8     public abstract ProductB CreateProductB();
     9     
    10 }//end interface AbstractFactory

      ConcreteFactory1的代码为:

     1 public class ConcreteFactory1 implements AbstractFactory {
     2 
     3     //创建ConcreteProductA1的对象。
     4     @Override
     5     public ProductA CreateProductA() {
     6         // TODO Auto-generated method stub
     7         return new ConcreteProductA1();
     8     }//end method CreateProductA
     9 
    10     //创建ConcreteProductB1的对象。
    11     @Override
    12     public ProductB CreateProductB() {
    13         // TODO Auto-generated method stub
    14         return new ConcreteProductB1();
    15     }//end method CreateProductB
    16 
    17 }//end class ConcreteFactory1

      ConcreteFactory2的代码与ConcreteFactory1的相似,在此不再列出。

    4、点击下载源码

  • 相关阅读:
    报表开发之扩展GROUP BY
    Leetcode--easy系列9
    datatable 前台和后台数据格式
    C实现头插法和尾插法来构建单链表(带头结点)
    HDOJ 题目1520 Anniversary party(树形dp)
    windows环境利用apache 配置虚拟主机
    POJ--1966--Cable TV Network【无向图顶点连通度】
    Linux Shell脚本编程学习笔记和实战
    win10 bcdedit加入vhdx启动
    设计模式之Mediator模式(笔记)
  • 原文地址:https://www.cnblogs.com/minbaba/p/6366126.html
Copyright © 2011-2022 走看看