C#设计模式系列之抽象工厂模式

273 阅读1分钟

    抽象工厂模式

    在统一管理对象创建,对象相互依赖时,可使用抽象工厂(可配合抽象方法使用)

    namespace DesingnPatten.抽象工厂模式
    {
        public abstract class AbstractCarFactory
        {
            public abstract AbstractCarA CreateCarA();
            public abstract AbstractCarB CreateCarB();
        }
        
        public abstract class AbstractCarA
        {
            public abstract void Interact(AbstractCarB b);
        }
    
        public abstract class AbstractCarB
        {
            public abstract void Interact(AbstractCarA a);
        }
    
        public class Client
        {
            private AbstractCarA carA;
            private AbstractCarB carB;
    
            public Client(AbstractCarFactory factory)
            {
                carA = factory.CreateCarA();
                carB = factory.CreateCarB();
            }
    
            public void Run()
            {
                carA.Interact(carB);
                carB.Interact(carA);
            }
        }
    
        public class CreateCarAFactory : AbstractCarFactory
        {
            public override AbstractCarA CreateCarA()
            {
                return new CarA();
            }
    
            public override AbstractCarB CreateCarB()
            {
                return new CarB();
            }
        }
    
        public class CarA : AbstractCarA
        {
            public override void Interact(AbstractCarB b)
            {
                Console.WriteLine($"I am {typeof(CarA).Name},created by {typeof(AbstractCarB).Name}");
            }
        }
    
        public class CarB : AbstractCarB
        {
            public override void Interact(AbstractCarA a)
            {
                Console.WriteLine($"I am {typeof(CarB).Name},created by {typeof(AbstractCarA).Name}");
            }
        }
    }
    

    类之间UML图如下

    本文使用 mdnice 排版