• 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.
  • 相关阅读:
    高数基础知识整理12.微分方程
    x(1-x)及其更高次在区间[0,1]上的积分值
    PHP中的http协议
    php简单实现MVC
    如何用jQuery获得select的值
    面向对象思想介绍
    MySQL 日期和时间戳的转换 | 以及DATE_FORMAT()用法
    js将时间转换为时间戳
    PHP中sql语句如何使用变量
    四种简单的sql语句(增删改查语句)
  • 原文地址:https://www.cnblogs.com/iiiDragon/p/3224322.html
Copyright © 2020-2023  润新知