zoukankan      html  css  js  c++  java
  • 工厂模式

    希望对你有所帮助(C#)

    首先是一个大体结构如下,

    抽象工厂:
    父类层:
          接口
          {//功能
      void Create();//创建
             void Delete();//删除
          }

          抽象类
          {
              1.静态的  自身类型的 属性  返回:实现类的对象  

              2.抽象的  接口类型的 属性
          }

    子类层:
          接口的实现类
          {
             //实现了具体功能 create()
          }

          抽象类的实现类
          {
             //重写接口类型的属性  get{ return new 接口实现类();}
               实际返回 本层接口的实现类对象
          }

    调用:
          抽象类.自身类型的属性.接口类型属性.Create();


    下面是一个项目结构的搭建(多层架构):
    1.新建类库Sys
      文件夹DAL
      {
           接口:IUserDao
           抽象类:DaoFactory
      }

    2.新建类库DAL
      文件夹DAO
      {
          接口实现类:UserDao 
          抽象类实现类:DaoRealize
      }

    3.在Sys层新建文件夹BLL
      {
     接口:IUserBll
     抽象类:BllFactory
       }

    4.新建类库BLL
     {
     接口实现类:UserBll
     抽象类实现类:BllRealize
     }

    5.新建WebUI
     
    6.将DAL、BLL程序集的生成路径改为/WebUI/bin
     class Program
        {
            static void Main1(string[] args)
            {
                //普通实现接口
                MyClass myInter = new MyClass();
               // myInter.Fun();

                // 接口类型的引用 指向  实现类的对象
                //显示实现接口
                //MyInterface myInter2;//引用类型 存储的是引用 声明在栈
                //myInter2= new MyClass();//存储在堆中
                //myInter2.Fun();

                MyInterface m1 = new MyClass();
                m1.Fun();

                MyInterface2 m2 = new MyClass();
                m2.Fun();

            }

            //抽象工厂
            static void Main()
            {
                AbstractFactory.Instanct.GetInterFather.Create();
            }
        }
        #region 接口、抽象类
        abstract class MyAbstract
        {
            string name;
            string Name;
            void Fun()
            {
     
            }
        }

        interface MyInterface
        {//功能
            void Fun();
        }
        interface MyInterface2
        {
            void Fun();
        }

        class MyClass:MyInterface,MyInterface2
        {
            //实现接口
         
            ////显示实现接口
            //void MyInterface.Fun()
            //{
            //    Console.WriteLine("22");
            //}
            void MyInterface.Fun()
            {
                
            }
            void MyInterface2.Fun()
            {
               
            }
        }
    #endregion
    }
    父类层
      //接口
        public interface InterFather
        {//功能
            void Create();
            void Delete();
        }
        
        //抽象类
        public abstract class AbstractFactory
        {
            //1.静态的  自身类型的 属性  返回实现类的对象
            private static AbstractFactory _instanct;
            public static AbstractFactory Instanct
            {
                get
                {//只读属性  返回私有字段
                    return _instanct;
                }
            }
            //静态构造函数  初始化静态成员
            static AbstractFactory()
            {
                //实例化实现类对象
                _instanct = new ChildFactory2();
            }

            //2.抽象的 接口类型的 属性
            public abstract InterFather GetInterFather { get; }
        }
    }


    子类层1
      //接口的实现类
        public class ChildInter1 : InterFather
        { //具体的实现方法
            void InterFather.Create()
            {
                Console.WriteLine("子类层1的create方法执行");
            }

            void InterFather.Delete()
            {
                Console.WriteLine("子类层1的delete方法执行");
            }
        }
        
         //抽象类的实现类
        public class ChildFactory1 : AbstractFactory
        {
            public override InterFather GetInterFather
            {
                get
                { //返回本层 接口的实现类
                    ChildInter1 child = new ChildInter1();
                    return child;
                }
            }
        }

    }


    子类层2
      //接口的实现类
        public class ChildInter2 : InterFather
        { //具体的实现方法
            void InterFather.Create()
            {
                Console.WriteLine("子类层2的create方法执行");
            }

            void InterFather.Delete()
            {
                Console.WriteLine("子类层2的delete方法执行");
            }
        }
        
         //抽象类的实现类
        public class ChildFactory2 : AbstractFactory
        {
            public override InterFather GetInterFather
            {
                get
                { //返回本层 接口的实现类
                    ChildInter2 child = new ChildInter2();
                    return child;
                }
            }
        }

    }

  • 相关阅读:
    CodeSmith中SchemaExplorer属性的介绍
    Bugku-INSERT INTO 注入
    XCTF-PHP2
    网络安全实验室CTF-注入关
    XSS挑战
    SQL注入
    CTFHub-技能树-命令执行
    CTFHub-技能树-文件上传
    史上最难的一道Java面试题 (分析篇)
    高可用的一些思考和理解
  • 原文地址:https://www.cnblogs.com/xhyang/p/3738839.html
Copyright © 2011-2022 走看看