zoukankan      html  css  js  c++  java
  • 工厂与抽象工厂

    委托注入

     class Program
        {
            static void Main(string[] args)
            {
    
                Func<EmployeeFactory.EmployeeparaContent, Employee.EmployeeAddress> employeeAddressPr = (s) =>
                {
                    return new Employee.EmployeeAddress()
                    {
                        Address1 = s.EmployeeAdress.Split(',')[0],
                        Address2 = s.EmployeeAdress.Split(',')[1]
    
    
                    };
    
                };
    
                 var empolyea=  EmployeeFactory.CreateEmployee("wzj", "北京1,杭州2", employeeAddressPr);
                 Console.Write(empolyea.Name + "	" + empolyea.AddressCollers.Address1 + "|" + empolyea.AddressCollers.Address2);
                 Console.ReadLine();
            }
        }
    
    
        //员工类
        public partial class Employee
        {
    
            //员工的地址类
            public class EmployeeAddress
            {
                public string Address1 { set; get; }
    
                public string Address2 { set; get; }
            }
            //名字
            public string Name{set;get;}
            //员工的地址信息
            public EmployeeAddress AddressCollers { set; get; }
        }
    
        //创建员工的简单工厂类  设计模式之创建形态
        public class EmployeeFactory
        {
           public class EmployeeparaContent
            {
    
                public string EmployeeAdress { set; get; }
            }
    
            //创建员工的方法  地址处理通过动态的委托来处理 可以随时变化处理方式*-
    
            public static Employee CreateEmployee(string name, string address, Func<EmployeeFactory.EmployeeparaContent, Employee.EmployeeAddress> adressFactory)
            {
                
                EmployeeparaContent parrcontent = new EmployeeparaContent();
                parrcontent.EmployeeAdress = address;
                //通过委托来代替工厂创建参数类型 更灵活 
                return new Employee() { Name = name, AddressCollers = adressFactory(parrcontent) };
    
            }
    
    
        }
    

      

    工厂创建的优势:对象的创建依赖工厂的创建方法 还不是依赖于new  如果这个对象的创建需要修改 new 的地方都需要改  工厂模式的话只需要修改工厂代码就行

    2.抽象工厂

    用接口吧创建的对象的行为和成员变量给抽象出来

    然后创建的的时候根据配置文件或者其他的  来创建继承该接口的对象  这样就符合依赖倒置的原则高层不依赖低层 应该依赖抽象

  • 相关阅读:
    网络编程基础
    面试题
    面试题合集
    异常
    三个重要的模块loggning,hashlib,configparse
    面向对象进阶
    单例模式
    反射
    封装
    开发规范
  • 原文地址:https://www.cnblogs.com/wzjbk/p/6403731.html
Copyright © 2011-2022 走看看