工厂方法
上篇文章写了简单工厂,在需求变化较小的且产品类不多的情况下可以使用简单工厂,但是简单工厂违背了软件设计的开闭原则,即对修改封闭,对扩展开放。当我们添加新的产品时,就必须在工厂类中添加case语句,这显然有不合理的地方——一个类的增加导致另一个类甚至许多个类的修改。
让我们来修改一下上篇文章中的工厂类,将工厂写成一个接口。
DoorsFactory.cs
WindowsFactory.cs
客户端的调用代码:
Code
工厂方法和简单工厂相比,对修改封闭的地方即不用添加case分支语句,对扩展开放的地方即添加新的工厂类也不会对原有的工厂类产生任何影响。
让我们来修改一下上篇文章中的工厂类,将工厂写成一个接口。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FactoryMethod
{
interface IFactory
{
Hardware CreateHardware();
}
}
实例化对象的工作交给了具体工厂来做。using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FactoryMethod
{
interface IFactory
{
Hardware CreateHardware();
}
}
客户端的调用代码:
工厂方法和简单工厂相比,对修改封闭的地方即不用添加case分支语句,对扩展开放的地方即添加新的工厂类也不会对原有的工厂类产生任何影响。

浙公网安备 33010602011771号