设计模式是软件开发讨论中,亘古不变的话题,今天又拿出来说道两句,也是对设计模式的一个复习吧。
工厂方法模式
工厂方法模型定义了一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式使一个类的实例化延迟到了其子类中。工厂方法模式是优化的简单工厂模式,它很好的支持了“开闭原则”。每一个具体的工厂只能构建一个类的对象。具体工厂类与产品类是一对一的关系。
/// <summary>
/// 抽象产品类
/// </summary>
public class Product{
public Product(){
Console.Write("new Product");
}
}
/// <summary>
/// 具体产品类A
/// </summary>
public class ConcreteProductA:Product {
public ConcreteProduct(){
Console.Write("创建了一个 ConcreteProductA");
}
}
/// <summary>
/// 具体产品类B
/// </summary>
public class ConcreteProductB:Product {
public ConcreteProduct(){
Console.Write("创建了一个 ConcreteProductB");
}
}
/// <summary>
/// 抽象的创建者
/// </summary>
abstract public class Creator{
//抽象的工厂方法
public abstract Product FactoryMethod();
}
/// <summary>
/// 具体方法工厂A
/// </summary>
public class ConcreteCreatorA:Creator{
//返回一个产品A的对象
public override Product FactoryMethod(){
return new ConcreteProductA();
}
}
/// <summary>
/// 具体方法工厂B
/// </summary>
public class ConcreteCreatorB:Creator{
//返回一个产品B的对象
public override Product FactoryMethod(){
return new ConcreteProductB();
}
}
//client端
static void Main(string[] args)
{
Creator c = new ConcreteCreatorA();
Product p = c.FcatoryMethod();
c = new ConcreteCreatorB();
p = c.FcatoryMethod();
Console.ReadLine();
}
适配器模式Adapter
适配器模式是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
两个成熟的类需要通信,但是接口不同,由于开闭原则,我们不能去修改这两个类的接口,所以就需要一个适配器来完成衔接过程。
变压器就是很好的适配器模式的例子。用电设备所需要的电压是9V,但是电线上的电压却是220V的,我们不能去更改它们的电压输入或输出,所以我们用到了变压器。变压器是220V的输入,9V的输出。这样就可以将200V的电压变为9V的电压,用变压器将用电设备连接到了电线上工作了。