CSharp设计模式读书笔记(3):抽象工厂模式(学习难度:★★★★☆,使用频率:★★★★★)...

抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式。

模式角色和结构图:

抽象工厂是指一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象。

示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSharp.DesignPattern.AbstractFactoryPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            IAbstractFactory factory1 = new ConcreteFactory1();
            IAbstractFactory factory2 = new ConcreteFactory2();

            IProductA a1 = factory1.CreateProductA();
            IProductA a2 = factory2.CreateProductA();

            IProductB b1 = factory1.CreateProductB();
            IProductB b2 = factory2.CreateProductB();

            a1.Display();
            a2.Display();

            b1.Display();
            b2.Display();

            Console.ReadLine();
        }
    }

    interface IAbstractFactory
    {
        IProductA CreateProductA();
        IProductB CreateProductB();
    }

    class ConcreteFactory1 : IAbstractFactory
    {
        public IProductA CreateProductA()
        {
            return new ProductA1();
        }

        public IProductB CreateProductB()
        {
            return new ProductB1();
        }
    }

    class ConcreteFactory2 : IAbstractFactory
    {
        public IProductA CreateProductA()
        {
            return new ProductA2();
        }

        public IProductB CreateProductB()
        {
            return new ProductB2();
        }
    }


    interface IProductA
    {
        void Display();
    }

    class ProductA1 : IProductA
    {
        public void Display()
        {
            Console.WriteLine("显示浅绿色按钮...");
        }
    }

    class ProductA2 : IProductA
    {
        public void Display()
        {
            Console.WriteLine("显示蓝色按钮...");
        }
    }

    interface IProductB
    {
        void Display();
    }

    class ProductB1 : IProductB
    {
        public void Display()
        {
            Console.WriteLine("显示浅绿色文本框...");
        }
    }

    class ProductB2 : IProductB
    {
        public void Display()
        {
            Console.WriteLine("显示蓝色文本框...");
        }
    }
}

 

转载于:https://www.cnblogs.com/thlzhf/archive/2012/11/27/2791694.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值