简单易懂的工厂方法模式

工厂方法模式

工厂方法模式构建

工厂模式构建

  • 创建者(Creator)声明返回产品对象的工程方法,该方法的返回对象类型必须与产品接口相匹配。你可以将工厂方法声明为抽象方法,强制要求每个子类以不同的方式实现该方法。或者,你可以在基础工厂方法中返回默认产品类型。

    public abstract IProduct CreateProduct();

    注意:尽管它的名字是创建者,单他最主要的职责不是创建产品。一般来说,创建者类包含一些与产品相关的核心业务逻辑。工厂方法将这些逻辑处理从具体产品中分离出来。比如:运输公司可以通过水运、航运、铁运等运输产品,但抽离出来都是运输这一个活动,只是方式不同。

    public string SomeOperation() {
                var product = CreateProduct();
                var result = "Creator: The same creator's code has just worked with " + product.Operation();
                return result;
            }
    
  • 具体创建者(Concrete Creator)将会重写基础工厂方法,使其返回不同类型的产品。

     class ConcreteCreatorA : Creator {
            public override IProduct CreateProduct()
            {
                return new ConcreteProductA();
            }
        }
    

    注意:并不一定每次调用工厂方法都会创建新的实列。工厂方法可以返回缓存、对象持或其他来源的已有对象。

  • 产品(Product)将会对接口进行声明,对所有由创建者及其子类构建的对象,这些接口都是通用的。

  • 具体产品(Concrete Product)是产品接口的不同实现。

完整的示例代码如下:
code-snapshot

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值