1. 程式人生 > >學習筆記:設計模式之抽象工廠(C#)

學習筆記:設計模式之抽象工廠(C#)

sta 實體 mys actor div ted rac int c#

1.創建抽象工廠類

    public abstract class AbstractFactory
    {
        public abstract Connect CreatConnet();
        public abstract Select CreatSelect();
    }

2.創建兩個抽象類

    public abstract class Connect
    {
        public abstract void Print();
    }

    public abstract class Select
    {
        public abstract void Print();
    }

3.創建兩個實體類

    public class SqlConnect : Connect
    {
        public override void Print()
        {
            //throw new NotImplementedException();
            Console.Write("Sql Connect");
        }
    }

    public class SqlSelect : Select
    {
        public override void Print()
        {
            Console.Write("Sql Select");
        }
    }


    public class MysqlConnect : Connect
    {
        public override void Print()
        {
            Console.Write("MySql Connect");
        }
    }

    public class MysqlSelect : Select
    {
        public override void Print()
        {
            Console.WriteLine("MySql Select");
        }
    }

4.創建實體工廠類

    public class SqlFactory : AbstractFactory
    {
        public override Connect CreatConnet()
        {
            return new SqlConnect();
        }

        public override Select CreatSelect()
        {
            return new SqlSelect();
        }
    }

    public class MySqlFactory : AbstractFactory
    {
        public override Connect CreatConnet()
        {
            return new MysqlConnect();
        }

        public override Select CreatSelect()
        {
            return new MysqlSelect();
        }
    }

5.客戶端調用

        static void Main(string[] args)
        {
            AbstractFactory sqlFactory = new SqlFactory();
            AbstractFactory mysqlFactory = new MySqlFactory();


            Connect sqlConnect = sqlFactory.CreatConnet();
            Connect mysqlConnect = mysqlFactory.CreatConnet();

            sqlConnect.Print();
            mysqlConnect.Print();

            Select sqlSelect = sqlFactory.CreatSelect();
            Select mysqlSelect = mysqlFactory.CreatSelect();

            sqlSelect.Print();
            mysqlSelect.Print();
            
            Console.Read();
        }

學習筆記:設計模式之抽象工廠(C#)