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

     public interface ISalary
        {
            void CommandSalary();
        }
    public abstract class ShenZhenSalary : ISalary
        {
            public virtual void CommandSalary()
            {
                Console.WriteLine("这是深圳子公司的工资计算模块");
            }
        }
     public abstract class BeiJinSalary : ISalary
        {
            public virtual void CommandSalary()
            {
                Console.WriteLine("这是北京子公司的工资计算模块");
            }
        }
    public class BeiJinItdSalary : BeiJinSalary
        {
            public override void CommandSalary()
            {
                Console.WriteLine("这是北京子公司ITD的工资计算模块");
            }
        }
    
        public class BeiJinHraSalary : BeiJinSalary
        {
            public override void CommandSalary()
            {
                Console.WriteLine("这是北京子公司HRA的工资计算模块");
            }
        }
    public class ShenZhenItdSalary : ShenZhenSalary
        {
            public override void CommandSalary()
            {
                Console.WriteLine("这是深圳子公司ITD的工资计算模块");
            }
        }
    
        public class ShenZhenHraSalary : ShenZhenSalary
        {
            public override void CommandSalary()
            {
                Console.WriteLine("这是深圳子公司HRA的工资计算模块");
            }
        }
    public interface IFactory
        {
            ShenZhenSalary CreateShenZhenSalary();
            BeiJinSalary CreateBeiJinSalary();
        }
    public class ItdFactory : IFactory
        {
            public ShenZhenSalary CreateShenZhenSalary()
            {
                return new ShenZhenItdSalary();
            }
            public BeiJinSalary CreateBeiJinSalary() 
            {
                return new BeiJinItdSalary();
            }
        }
    public class HraFactory:IFactory
        {
           public ShenZhenSalary CreateShenZhenSalary()
           {
               return new ShenZhenHraSalary();
           }
           public BeiJinSalary CreateBeiJinSalary()
           {
               return new BeiJinHraSalary();
           }
        }
    class Program
        {
            public static void Main(string[] args)
            {
                IFactory Factory = new ItdFactory();  //实例化Itd工厂类
                ShenZhenSalary SalarySzItd = Factory.CreateShenZhenSalary();
                SalarySzItd.CommandSalary(); //调用深圳ITD公司计算过程
    
                BeiJinSalary SalaryBjItd = Factory.CreateBeiJinSalary();
                SalaryBjItd.CommandSalary(); //调用北京ITD公司计算过程
    
                Factory = new HraFactory(); //实例化Hra工厂类
                ShenZhenSalary SalarySzHra = Factory.CreateShenZhenSalary();
                SalarySzHra.CommandSalary(); //调用深圳Hra公司计算过程
    
                BeiJinSalary SalaryBjHra = Factory.CreateBeiJinSalary();
                SalaryBjHra.CommandSalary(); //调用北京Hra公司计算过程
    
                Console.ReadLine();
            }
        }
  • 相关阅读:
    点击图片跳转详情
    offsetwidth/clientwidth的区别
    css中让元素隐藏的多种方法
    js中的||、&&与!用法
    怎么区分静态网页和动态网页
    我的第一篇博客--新手勿喷
    2015腾讯暑期实习生面试
    ring0 与 ring3 层之间的交互
    驱动层得到进程的完整路径
    WinDbg调试流程的学习及对TP反调试的探索
  • 原文地址:https://www.cnblogs.com/mrhgw/p/3012873.html
Copyright © 2011-2022 走看看