java-pattern 之 读书笔记1 —— simple factory
从今天开始,计划用三天的时间读完这个讲稿并领悟其中的奥妙。随时记之。
设计模式的是伴随着开发者大量经验的积累和需求的增加产生的。它的主要目的就是面向接口编程,降低耦合性,提高内聚性,增加灵活性。
设计模式大概分三类:
创建模式(Creational Patterns)、结构模式(Structural Patterns)、行为模式(Behavioral Patterns).
今天就创建模式中的工厂模式加以分析:
目的:提供一个接口来创建相关系的或相依赖的一系列对象而不必指定这些对象的具体的类。简单的说就是客户跟工厂的关系,用户提出需求给工厂,不必关心工厂如何生产产品,工厂按需求生产出符合要求的产品,工厂对外只提供一个接收需求信息的部门就可以了。
工厂模式又称简单工厂模式,跟抽象工厂模式都属工厂模式。
工厂模式的缺点:当客户要求的产品变化时工厂需要做相应的修改。比如说客户要新增大号冰箱的生产,而工厂以前没有此生产线,那么工厂就需要新增一条来满足客户要求的生产线。
下面是一个简单工厂的示例:
/// <summary>
/// IFood 食物的接口。
/// </summary>
public interface IFood
{
//两个属性 食物名称、食物价格

string FoodName
{
get;
}
string FoodPrice
{
get;
}
}
/// <summary>
/// Hamburger 汉堡包。
/// </summary>
public class Hamburger : IFood
{
public Hamburger()
{
}

public string FoodName
{
get { return "汉堡包"; }
}

public string FoodPrice
{
get{ return "5元/个"; }
}
}
/// <summary>
/// Drumstrick 鸡腿。
/// </summary>
public class Drumstrick : IFood
{
public Drumstrick()
{
}

public string FoodName
{
get{ return "鸡腿"; }
}
public string FoodPrice
{
get{ return "3元/只"; }
}
}
/// <summary>
/// KFCFactory 肯德基工厂。
/// </summary>
public class KFCFactory
{
#region contructor
public KFCFactory()
{
}
#endregion

public static IFood Creator(FoodType ft)
{
if(FoodType.Drumstick == ft)
{
return new Drumstrick();
}
else if(FoodType.Hamburger == ft)
{
return new Hamburger();
}
else
return null;
}
}我们只要说明我们想要的食物类型(汉堡还是鸡腿)就可以了,无须关心肯德基是怎么生产汉堡和鸡腿的。如果我们要加入一个新的食物,那么除了写一个新的食物类以外,工厂KFCFactory里也要做相应的改动,这也就是工厂模式的一个缺点。
这就是简单工厂模式。
抽象工厂模式呢?
设计模式的是伴随着开发者大量经验的积累和需求的增加产生的。它的主要目的就是面向接口编程,降低耦合性,提高内聚性,增加灵活性。
设计模式大概分三类:
创建模式(Creational Patterns)、结构模式(Structural Patterns)、行为模式(Behavioral Patterns).
今天就创建模式中的工厂模式加以分析:
目的:提供一个接口来创建相关系的或相依赖的一系列对象而不必指定这些对象的具体的类。简单的说就是客户跟工厂的关系,用户提出需求给工厂,不必关心工厂如何生产产品,工厂按需求生产出符合要求的产品,工厂对外只提供一个接收需求信息的部门就可以了。
工厂模式又称简单工厂模式,跟抽象工厂模式都属工厂模式。
工厂模式的缺点:当客户要求的产品变化时工厂需要做相应的修改。比如说客户要新增大号冰箱的生产,而工厂以前没有此生产线,那么工厂就需要新增一条来满足客户要求的生产线。
下面是一个简单工厂的示例:
/// <summary>
/// IFood 食物的接口。
/// </summary>
public interface IFood
{
//两个属性 食物名称、食物价格
string FoodName
{
get;
}
string FoodPrice
{
get;
}
}
/// <summary>
/// Hamburger 汉堡包。
/// </summary>
public class Hamburger : IFood
{
public Hamburger()
{
}
public string FoodName
{
get { return "汉堡包"; }
}
public string FoodPrice
{
get{ return "5元/个"; }
}
}
/// <summary>
/// Drumstrick 鸡腿。
/// </summary>
public class Drumstrick : IFood
{
public Drumstrick()
{
}
public string FoodName
{
get{ return "鸡腿"; }
}
public string FoodPrice
{
get{ return "3元/只"; }
}
}
/// <summary>
/// KFCFactory 肯德基工厂。
/// </summary>
public class KFCFactory
{
#region contructor
public KFCFactory()
{
}
#endregion
public static IFood Creator(FoodType ft)
{
if(FoodType.Drumstick == ft)
{
return new Drumstrick();
}
else if(FoodType.Hamburger == ft)
{
return new Hamburger();
}
else
return null;
}
}这就是简单工厂模式。
抽象工厂模式呢?


浙公网安备 33010602011771号