先这里给大家分享一个学习设计模式好的网站:https://refactoring.guru/
今天先来说说最简单的设计模式:工厂方法模式
先来看看关系图:
抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。
具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
抽象产品角色:它是具体产品继承的父类或者是实现的接口。
具体产品角色:具体工厂角色所创建的对象就是此角色的实例。
下面贴上代码:
//产品公共接口
public interface IGood
{
void ShowGood();
}
//具体产品A
public class GoodA : IGood
{
public void ShowGood()
{
Console.WriteLine("生产了商品A");
}
}
//具体产品B
public class GoodB : IGood
{
public void ShowGood()
{
Console.WriteLine("生产了商品B");
}
}
//具体产品B
public class GoodC : IGood
{
public void ShowGood()
{
Console.WriteLine("生产了商品C");
}
}
//抽象工厂角色
public interface IFactory
{
IGood CreateGood();
}
//具体工厂A
public class FactoryA : IFactory
{
public IGood CreateGood()
{
return new GoodA();
}
}
//具体工厂B
public class FactoryB : IFactory
{
public IGood CreateGood()
{
return new GoodB();
}
}
//具体工厂C
public class FactoryC : IFactory
{
public IGood CreateGood()
{
return new GoodC();
}
}
客户调用:
IFactory factory = new FactoryA();
IGood good = factory.CreateGood();
good.ShowGood();
输出:
相比较简单工厂而言:工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行,用户只需要知道对应的工厂就可以了