软件设计师23种设计模式总结

Posted 计算机与GIS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件设计师23种设计模式总结相关的知识,希望对你有一定的参考价值。

1

软件设计师23种设计模式总结

软件设计师23种设计模式总结

1

软件设计师23种设计模式总结

1

Abstract Factory(抽象工厂)提供一个创建一系列相关或互相依赖对象的接口,而无须制定它们具体的类。


Abstract Factory抽象工厂
    class Program

    {

        static void Main(string[] args)

        {

            AbstractFactory factory1 = new ConcreteFactory1();

            Client c1 = new Client(factory1);

            c1.Run();


            AbstractFactory factory2 = new ConcreteFactory2();

            Client c2 = new Client(factory2);

            c2.Run();


            Console.Read();


        }

    }


    abstract class AbstractFactory

    {

        public abstract AbstractProductA CreateProductA();

        public abstract AbstractProductB CreateProductB();

    }


    class ConcreteFactory1 : AbstractFactory

    {

        public override AbstractProductA CreateProductA()

        {

            return new ProductA1();

        }

        public override AbstractProductB CreateProductB()

        {

            return new ProductB1();

        }

    }


    class ConcreteFactory2 : AbstractFactory

    {

        public override AbstractProductA CreateProductA()

        {

            return new ProductA2();

        }

        public override AbstractProductB CreateProductB()

        {

            return new ProductB2();

        }

    }

    abstract class AbstractProductA

    {

    }


    abstract class AbstractProductB

    {

        public abstract void Interact(AbstractProductA a);

    }


    class ProductA1 : AbstractProductA

    {

    }


    class ProductB1 : AbstractProductB

    {

        public override void Interact(AbstractProductA a)

        {

            Console.WriteLine(this.GetType().Name +

              " interacts with " + a.GetType().Name);

        }

    }


    class ProductA2 : AbstractProductA

    {

    }


    class ProductB2 : AbstractProductB

    {

        public override void Interact(AbstractProductA a)

        {

            Console.WriteLine(this.GetType().Name +

              " interacts with " + a.GetType().Name);

        }

    }


    class Client

    {

        private AbstractProductA AbstractProductA;

        private AbstractProductB AbstractProductB;


        // Constructor

        public Client(AbstractFactory factory)

        {

            AbstractProductB = factory.CreateProductB();

            AbstractProductA = factory.CreateProductA();

        }


        public void Run()

        {

            AbstractProductB.Interact(AbstractProductA);

        }

    }


2 Builder(生成器)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

Builder 生成器
    class Program

    {

        static void Main(string[] args)

        {

            Director director = new Director();

            Builder b1 = new ConcreteBuilder1();

            Builder b2 = new ConcreteBuilder2();


            director.Construct(b1);

            Product p1 = b1.GetResult();

            p1.Show();


            director.Construct(b2);

            Product p2 = b2.GetResult();

            p2.Show();


            Console.Read();

        }

    }


    class Director

    {

        public void Construct(Builder builder)

        {

            builder.BuildPartA();

            builder.BuildPartB();

        }

    }


    abstract class Builder

    {

        public abstract void BuildPartA();

        public abstract void BuildPartB();

        public abstract Product GetResult();

    }


    class ConcreteBuilder1 : Builder

    {

        private Product product = new Product();


        public override void BuildPartA()

        {

            product.Add("部件A");

        }


        public override void BuildPartB()

        {

            product.Add("部件B");

        }


        public override Product GetResult()

        {

            return product;

        }

    }


    class ConcreteBuilder2 : Builder

    {

        private Product product = new Product();

        public override void BuildPartA()

        {

            product.Add("部件X");

        }


        public override void BuildPartB()

        {

            product.Add("部件Y");

        }


        public override Product GetResult()

        {

            return product;

        }

    }


    class Product

    {

        IList<string> parts = new List<string>();


        public void Add(string part)

        {

            parts.Add(part);

        }


        public void Show()

        {

            Console.WriteLine("\n产品 创建 ----");

            foreach (string part in parts)

            {

                Console.WriteLine(part);

            }

        }

}





文:杨


以上是关于软件设计师23种设计模式总结的主要内容,如果未能解决你的问题,请参考以下文章

23种软件设计模式

GOF 的23种JAVA常用设计模式总结 03 面向对象七大设计原则

java中的23种设计模式--最最最详细总结和使用时注意事项

设计模式概述 以及 23种设计模式的介绍

设计模式的学习-软件设计模式的概念与意义以及23种设计模式的简单介绍

23种设计模式-简单工厂模式