您的位置:首页 > 编程语言

几种常用设计模式代码(未完)

2015-10-29 12:48 357 查看
1、简单工厂模式:
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" ?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式