• Design Pattern ->Factory Method


    Layering & Contract Philosophy With additional indirection

    Factory Method

    The example code is as following:

     

     1 class CProduct //interface declaration
     2 class CConcreteProductOne: public CProduct;
     3 class CConcreteProductTwo: public CProduct;
     4 
     5 
     6 class CCreator
     7 {
     8      public: virtual CProduct* FactoryMethod()= 0;
     9 }
    10 class CConcreteCreator: public CCreator
    11 {
    12      public: CProduct* FactoryMethod(){ return new CConcreteProductOne()  OR  new CConcreteProductTwo()};
    13 }
    14 class CClient
    15 {  
    16         CCreator *pCreator = new CConreteCreator();
    17         CProduct *pProduct = pCreator->FacotryMethod();
    18 }

    IoC = Inversion Of Control.

    控制反转还有一个名字叫做依赖注入(Dependency Injection)。简称DI

    DIP = Dependence-Inversion Principle ( low-level module is depended on high-level module by defining abstract interface in high-level).

    Interface-Oriented Programming, not Implement-Oriented Programming

    Applicability
    Use the Factory Method pattern when

    •  A class can't anticipate the class of objects it must create.
    •  A class wants its subclasses to specify the objects it creates.
    • Classes delegate responsibility to one of several helper subclasses, and you want to localize the knowledge of which helper subclass is the delegate.
    • The new proper/appropriate instance of the concrete product can be got at run-time from the real situation.

    Participants

    • Product: defines the interface of objects the factory method creates.
    • ConcreteProduct : implements the Product interface.
    • Creator : declares the factory method, which returns an object of type Product.Creator may also define a default implementation of the factory method that returns a default ConcreteProduct object. may call the factory method to create a Product object.
    • ConcreteCreator: overrides the factory method to return an instance of a ConcreteProduct.

    Collaborations

    • Creator relies on its subclasses to define the factory method so that it returns an instance of the appropriate ConcreteProduct.
  • 相关阅读:
    Oracle中job的使用详解
    Control File (二)重建CONTROLFILE --- NORESETLOG
    Oracle Analyze 命令 详解
    深入学习Oracle分区表及分区索引
    B树索引和位图索引的区别!
    RAID0_RAID1_RAID10_RAID5各需几块盘才可组建
    Oracle IO优化心得
    修改dbwr后台进程数量
    查看ORACLE执行计划的几种常用方法
    printf()格式化输出详解及echo带颜色输出
  • 原文地址:https://www.cnblogs.com/iiiDragon/p/3224322.html
Copyright © 2020-2023  润新知