设计模式-抽象工厂模式(abstractFactory pattern)

名称:抽象工厂模式

动机:别管这钱怎么来的(有美元和欧元),给你就用就行了

适用性:

参与者:

结果:和工厂方法类似,属于工厂方法的升级版本,唯一的改变是抽象工厂对产品作了进一步的细分

类图:


说明:允许客户使用抽象的接口来创建一组相关的产品,而不需要知道实际产出的产品是什么,从而实现客户与产品的解耦。

code C#:

namespace abstractFactory {
    class Program {
        static void Main(string[] args) {
            iFactory factory = new factory();
            iProduct1 p1a = factory.createProduct1("A");
            iProduct2 p2b = factory.createProduct2("B");

            p1a.showProduct1Desc();
            p2b.showProduct2Desc();

            Console.Read();
        }
    }


    // main code
    interface iProduct1 {
        void showProduct1Desc();
    }
    interface iProduct2 {
        void showProduct2Desc();
    }
    class product1_A : iProduct1 {
        public void showProduct1Desc() {
            Console.WriteLine("this is product1_A");
        }
    }
    class product1_B : iProduct1 {
        public void showProduct1Desc() {
            Console.WriteLine("this is product1_B");
        }
    }
    class product2_A : iProduct2 {
        public void showProduct2Desc() {
            Console.WriteLine("this is product2_A");
        }
    }
    class product2_B : iProduct2 {
        public void showProduct2Desc() {
            Console.WriteLine("this is product2_B");
        }
    }

    interface iFactory {
        iProduct1 createProduct1(string type);
        iProduct2 createProduct2(string type);
    }
    class factory : iFactory {
        public iProduct1 createProduct1(string type) {
            switch (type) {
                case "A":
                    return new product1_A();
                case "B":
                    return new product1_B();
                default:
                    return null;
            }
        }
        public iProduct2 createProduct2(string type) {
            switch (type) {
                case "A":
                    return new product2_A();
                case "B":
                    return new product2_B();
                default:
                    return null;
            }
        }
    }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值