几种常用设计模式代码(未完)
2015-10-29 12:48
357 查看
1、简单工厂模式:
2、工厂方法模式:
3、抽象工厂(以简单工厂作修改)+反射:
abstract class Product { public string name; public abstract void function(); } ----------------------------------------------------------- class ProductA : Product { public ProductA() { name = "扳手"; } public override void function() { Console.WriteLine("我是{0},我能拧螺丝", name); } } ----------------------------------------------------------- class ProductB:Product { public ProductB() { name = "板砖"; } public override void function() { Console.WriteLine("我是{0},我能敲人", name); } } ------------------------------------------------------------ class ProductC:Product { public ProductC() { name = "斧头"; } public override void function() { Console.WriteLine("我是{0},我能劈东西", name); } } ------------------------------------------------------------ class SimpleFactroy { private string ProductName; public SimpleFactroy(string name) { ProductName = name; } public Product ProduceProduct() { Product product; switch (ProductName) { case "扳手": product=new ProductA(); break; case "板砖": product=new ProductB(); break; case "斧头": product = new ProductC(); break; default: Console.WriteLine("无该产品"); return default(Product); } return product; } } ---------------------------------------------------------- class Program { static void Main(string[] args) { SimpleFactroy factroy = new SimpleFactroy("扳手"); Product p=factroy.ProduceProduct(); p.function(); } }
2、工厂方法模式:
abstract class Product { public string name; public abstract void function(); } --------------------------------------- class ProductA : Product { public ProductA() { name = "扳手"; } public override void function() { Console.WriteLine("我是{0},我能拧螺丝", name); } } ---------------------------------------- class ProductB:Product { public ProductB() { name = "板砖"; } public override void function() { Console.WriteLine("我是{0},我能敲人", name); } } ------------------------------------------- class ProductC:Product { public ProductC() { name = "斧头"; } public override void function() { Console.WriteLine("我是{0},我能劈东西", name); } } ---------------------------------------------- interface headFactroy { void ProduceProduct(); } ---------------------------------------------- class Fractroy1 : headFactroy { Product product; public Fractroy1() { product = new ProductA(); } public void ProduceProduct() { product.function(); } } ------------------------------------------------- class Fractroy2:headFactroy { Product product; public Fractroy2() { product = new ProductB(); } public void ProduceProduct() { product.function(); } } --------------------------------------------------- class Fractroy3 { Product product; public Fractroy3() { product = new ProductB(); } public void ProduceProduct() { product.function(); } } ------------------------------------------------- static void Main(string[] args) { headFactroy factroy = new Fractroy2(); factroy.ProduceProduct(); }
3、抽象工厂(以简单工厂作修改)+反射:
class Factory { private readonly string AssemblyName; private readonly string productName; public Factory() { AssemblyName = "abstractFactory"; productName = ConfigurationManager.AppSettings["product"]; } public IClient CreateClient() { string className = AssemblyName + "." + productName+"Client"; return (IClient)Assembly.Load(AssemblyName).CreateInstance(classN 4000 ame); } public IProduct CreateProduct() { string className = AssemblyName + "." + productName; return (IProduct)Assembly.Load(AssemblyName).CreateInstance(className); } } ------------------------------------------------------------------------------- interface IClient { } ------------------------------------------------------------------------------- interface IProduct { } ------------------------------------------------------------------------------- class product1Client:IClient { public product1Client() { Console.WriteLine("我是专门收板砖的客户!!!!"); } } ------------------------------------------------------------------------------- class product1:IProduct { public product1() { Console.WriteLine("我是板砖,我怕谁!!!"); } } ------------------------------------------------------------------------------- class Program { static void Main(string[] args) { Factory factory=new Factory(); IClient client = factory.CreateClient(); IProduct product = factory.CreateProduct(); } } ----------------------------------------------------------------------------- //配置文件 <?xml version="1.0" encoding="utf-8" ?>
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- PHP设计模式之装饰者模式代码实例
- php设计模式之单例模式实例分析
- 介绍php设计模式中的工厂模式
- PHP设计模式之适配器模式代码实例
- 深入浅出23种设计模式
- 浅谈c#设计模式之单一原则
- C#设计模式之观察者模式实例讲解
- C#设计模式之单例模式实例讲解
- 深入理解JavaScript系列(28):设计模式之工厂模式详解
- 面向对象设计模式的核心法则
- JavaScript设计模式之单件模式介绍
- 深入理解JavaScript系列(25):设计模式之单例模式详解
- JavaScript设计模式之外观模式实例