zoukankan      html  css  js  c++  java
  • 工厂模式{C#描述}

    概述

        在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。

        简而言之: 通过传入"类名", 创建不同的对象.

    意图

        提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

    类: CAdmin(管理员类), CUser(普通用户类)

    接口: IUser(用户类)

    关系: CAdmin(管理员类), CUser(用户类) 都实现 IUser接口

    类: CAdmin(管理员类)

    namespace WebApplication1
    {
        public class CAdmin:IUser
        {
    
            #region IUser 成员
    
            public string GetName()
            {
                return "我是管理员, 小样敢乱发言逮捕!";
            }
    
            #endregion
        }
    }

    类: CUser(普通用户类)

    namespace WebApplication1
    {
        public class CUser:IUser
        {
    
            #region IUser 成员
    
            public string GetName()
            {
                return "我是普通用户!";
            }
    
            #endregion
        }
    }

    接口: IUser(用户类)

    namespace WebApplication1
    {
        interface IUser
        {
            string GetName();
        }
    }
    

    调用(实现部分):

    //用户对象
    protected void Button1_Click(object sender, EventArgs e)
    {
    	Label1.Text = GetName("WebApplication1.CUser");
    }
    //管理员对象
    protected void Button2_Click(object sender, EventArgs e)
    {
    	Label2.Text = GetName("WebApplication1.CAdmin");
    }
    //得到名字, 当然还有简短的话 - -
    public string GetName(string className)
    {
    	IUser user = (IUser)Assembly.Load("WebApplication1").CreateInstance(className);
    	return user.GetName();
    }
    源码下载
  • 相关阅读:
    MyEclipse10.0构建maven web项目
    maven安装与配置(windows系统)
    Spring远程服务(RPC)
    Spring Security
    Spring MVC
    spring事务管理
    java图形界面
    Mysql 临时表+视图
    python_控制台输出带颜色的文字方法
    [Python] 字符串加密解密
  • 原文地址:https://www.cnblogs.com/henw/p/2192020.html
Copyright © 2011-2022 走看看