• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
一个具有上进心的码农
因为一篇文章中有很多是从很多篇文章中摘取的,请恕我没有一一说明摘取出处,如果没有说明,则该文章默认是摘取,如有侵犯您的权益,请与我联系,将会马上删除。
博客园    首页    新随笔    联系   管理    订阅  订阅

抽象工厂模式

今天自已写了一个。 主要还是要用到抽像类。

 

 其实说来就几点: 1 一个抽像工厂类。 一堆工厂继承于它。

 

                         2 一个抽像类品类。 一堆产品继承它。

 

   贴出我的代码。

 

 

    public class ChinaTax : ITax
    {
        public override string GetTax()
        {
            return "ChinaTax";
        }
    }

    public class AmericanTax : ITax
    {
        public override string GetTax()
        {
            return "AmericanTax";
        }
   
    }
    public abstract class ITax
    {
    public  abstract  string GetTax();
    }


    public class ChinaFactory :AbstractFactory
    {
        public override ITax CreatTax()
        {
            return new ChinaTax();
        }
   
    }
    public class AmericanFactory : AbstractFactory
    {
        public override ITax CreatTax()
        {
            return new AmericanTax();
        }

    }

 

    public   abstract class AbstractFactory
    {
    
        public abstract ITax CreatTax();
    }

 

  class Create
    {
        public void Show(AbstractFactory oAbstractFactory)
        {
           ITax oITax= oAbstractFactory.CreatTax();
           Console.Write(oITax.GetTax());
        }
    }

 

这里开始调用代码:

  static void Main(string[] args)
        {

            string assemblyName = ConfigurationManager.AppSettings["nameSpaceName"];
            string fullTypeName = string.Concat(ConfigurationManager.AppSettings["nameSpaceName"], ".", ConfigurationManager.AppSettings["typename"]);

            AbstractFactory factory = (AbstractFactory)Assembly.Load(assemblyName).CreateInstance(fullTypeName);
            Create clothes = new Create();
            clothes.Show(factory);
            Console.Read();
        }

在App.config中

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!--一般情况下只需改第二个"typename"就行了,具体工厂类    -->
    <add key="nameSpaceName" value="ConsoleApplication1"/>
    <add key="typename" value="ChinaFactory"/>
  </appSettings>
</configuration>

如果你改的话。 只需要改第二个即可。

posted @ 2008-07-30 16:55  不若相忘于江湖  阅读(186)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3