Supplement: C++ Code Examples

Example 10-4. C++ Code Fragments: A Switch to Control Which Driver to Use
// C++ CODE FRAGMENT

// class ApControl
   .  .  .
void ApControl::doDraw () {
   .  .  .
  switch (RESOLUTION) {
    case LOW:
      // use lrdd
    case HIGH:
      // use hrdd
  }
}
void ApControl::doPrint () {
   .  .  .
  switch (RESOLUTION) {
    case LOW:
      // use lrpd
    case HIGH:
      // use hrpd
  }
}

Example 10-5. C++ Code Fragments: Using Polymorphism to Solve the Problem
// C++ CODE FRAGMENT

// class ApControl
   .  .  .
void ApControl::doDraw () {
   .  .  .
  myDisplayDriver->draw();
}
void ApControl::doPrint () {
   .  .  .
  myPrintDriver->print();
}

Example 10-6. C++ Code Fragments: Implementation of ResFactory
class ResFactory {
  public:
    virtual DisplayDriver *getDispDrvr()=0;
    virtual PrintDriver *getPrtDrvr()=0;
}

class LowResFact : public ResFactory {
  public:
    DisplayDriver *getDispDrvr();
    PrintDriver *getPrtDrvr();
}

DisplayDriver *LowResFact::getDispDrvr() {
  return new LRDD;
}

PrintDriver *LowResFact::getPrtDrvr() {
  return new LRPD;
}

class HighResFact : public ResFactory {
  public:
    DisplayDriver *getDispDrvr();
    PrintDriver *getPrtDrvr();
}

DisplayDriver *HighResFact::getDispDrvr() {
  return new HRDD;
}

PrintDriver *HighResFact::getPrtDrvr() {
  return new HRPD;
}

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.144.97.126