一:简单工厂
模型:
案例:
namespace 简单工厂
{
class Program
{
static void Main(string[] args)
{
Factory f = new Factory();
f.N1("大众");
f.N2("保时捷");
Console.Read();
}
//1.属于创建型模型;
//2.静态类;
//3.拥有一个工厂方法(create),接受一个参数,创建不同的产品;
//4.可以生产同一个产品同一个等级结构中的任意产品;
//优点:可以实例化任何类;
//缺点:负担太重,代码量太大;无法遵守开闭原则;
//场景:知道传入工厂类的参数,对创建对象(逻辑)不关心;
//实例:Java中的JDBC操作数据库
class Car
{
public string Name { get; set; }//汽车名称
}
class Bug
{
public string Name { get; set; }
}
//工厂类
class Factory
{
Car c = new Car();
Bug b = new Bug();
//方法一
public void N1(string name)
{
Console.WriteLine("汽车的名字为:{0}", name);
}
//方法二
public void N2(string name)
{
Console.WriteLine("汽车的名字为:{0}", name);
}
}
}
}
结果:
二:工厂方法
//1.每一种产品提供一个产品;
//2.生产同一产品同一等级结构中的固定产品;
//3.定义一个创建对象的接口;
//缺点:相对于简单工厂实现较为复杂;
//生成产品族的情况处理比较复杂;
//优点:不需要关心创建的细节;
//多态性工厂模式,符合开闭原则;
//实现了可扩展性;
模型:
案例:
①:需要的类
②:各自的细节
③:各自的代码
三:抽象工厂
//1.生产不同产品族的全部产品;
//2.针对于系列;
//优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象;
//缺点:产品族扩展非常困难;产品等级容易扩展;
//应用场景:QQ换肤;生成不同操作系统的程序;
模型:
案例:
①:需要的类
②:具体 代码
其他类如同上述;
结果:
点击院长按钮显示出内容: