31面向对象设计模式之工厂方法模式概念的提升

Posted sy-liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了31面向对象设计模式之工厂方法模式概念的提升相关的知识,希望对你有一定的参考价值。

例子如下:

public abstract class Product{
    public string productName;
}
public abstract class ProductFactory{
    public Product FactoryMethod(string producTypeName){
        Product product;
        product = CreateProduct(producTypeName);
        return product;
    }
    
    public abstract CreateProduct(string productName);
}

public class ProductA : Product{
    public ProductA(){
        
        productName = "ProductA";
    }
}

public class ProductB : Product{
    public ProductB(){
        
        productName = "ProductB";
    }
}
public class ProductC : Product{
    public ProductC(){
        
        productName = "ProductC";
    }
}
public class ProductD : Product{
    public ProductD(){
        
        productName = "ProductD";
    }
}
public class ProductFactoryA : ProductFactory{
    
    public override Product CreateProduct(string producName){
        switch(producName){
            case "A":
                return new ProductA();
            case "B":
                return new ProductB();
        }
        return null;
    }
}
public class ProductFactoryB :ProductFactory{
    public override Product CreateProduct(string producName){
        switch(producName){
            case "C":
                return new ProductC();
            case "D":
                return new ProductD();
        }
        return null;
    }
}
class Program{
    
    static void Main(string[] args){
        ProductFactory myProductFactory = new ProductFactoryA();
        Product myProduct = myProductFactory.FactoryMethod("A");
        Console.WriteLine(myProduct.productName);
        myProduct = myProduct.FactoryMethod("B");
        Console.WriteLine(myProduct.producName);
        ProductFactory myProductFactoryB = new ProductFactoryB();
        Product myProductB = myProductFactoryB.FactoryMethod("C")
        Console.WriteLine(myProductB.producName);
        myProductB = myProductFactoryB.FactoryMethod("D");
        Console.WriteLine(myProduct.producName);
    }
}

 

以上是关于31面向对象设计模式之工厂方法模式概念的提升的主要内容,如果未能解决你的问题,请参考以下文章

32面向对象设计模式之工厂方法模式——工厂方法对之前的例子进行改造

面向对象编程模式之“简单工厂和单例“

js面向对象程序设计之构造函数

Java代码实现设计模式之工厂模式

c#面向对象10--简单工厂设计模式

Java工厂模式之总有你想不到的知识