抽象工厂模式有点疑问?
比如总工厂类:using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryMode
{
/// <summary>
/// 总工厂
/// </summary>
public abstract class AbstractFactory
{
public abstract AbstractUser CreateUser();
public abstract AbstractBook CreateBook();
}
}
子工厂类:
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryMode
{
/// <summary>
/// 一个具体的工厂
/// </summary>
public class ConcreteFactory : AbstractFactory
{
/// <summary>
/// 子工厂,用来创造用户
/// </summary>
/// <returns></returns>
public override AbstractUser CreateUser()
{
//具体的产物
return new User();
}
/// <summary>
/// 子工厂,用来创造书籍
/// </summary>
/// <returns></returns>
public override AbstractBook CreateBook()
{
//具体的产物
return new Book() ;
}
}
}
.........................................
最后调用
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryMode{
class Program
{
static void Main(string[] args)
{
//得到一个子工厂
AbstractFactory factory = new ConcreteFactory(); //这里干嘛不直接new新建一个AbstractFactory类,偏偏从子类来新建?是不是抽象类不能直接新建对象?
//创造用户
AbstractUser user = factory.CreateUser();
user.CreateUser();
//创造书籍
AbstractBook book = factory.CreateBook();
book.CreateBook();
}
}
}
------解决方案--------------------是的,抽象类不能直接新建对象
------解决方案--------------------本身不能实例化,用它,考虑的是功能差不多,提高代码重用
------解决方案--------------------AbstractFactory 不能new的,你可以想象new一个AbstractFactory,他怎么知道你到底要哪个实现类