new 的问题
常规的对象创建方法: Road road = new Road();

    -- 实现依赖,不能应对“具体实例化类型”的变化。

解决思路:
    -- 封装变化点--哪里变化,封装哪里
    -- 潜台词:如果没有变化,当然不需要额外的封装

工厂模式的缘起

·变化点在"对象创建",因此就封装"对象创建"
·面向接口编程--依赖接口,而非依赖实现
·最简单的解决方法:

Abstract Factory 抽象工厂(创建型模式) 

 

创建一系列相互依赖的对象

假设一个游戏开发场景:

我们需要构造"道路","房屋","地道","丛林"....

从一个对象工厂到一组有关系的对象工厂:

 

        static void Main(string[] args)
        {
            Road road 
= RoadFactory.CreateRoad();
            ...
            Building building 
= RoadFactory.CreateBuilding();
        }
//==============上面的客户程序相对稳定,下面为变化点================
        class RoadFactory
        {
            
public static Road CreateRoad()  //把Road创建成抽象类
            {
                
return new Road();    //这里返回具体的实例,如WaterRoad,DryRoad
            }

            
public static Road CreateBuilding()
            {
                
return new Building();
            }

            
public static Road CreateTunnel()
            {
                
return new Tunnel();
            }
            ...
        }

相关文章:

  • 2021-08-10
  • 2021-05-22
  • 2021-09-29
  • 2021-04-13
  • 2021-09-30
  • 2021-09-02
  • 2022-12-23
  • 2022-02-23
猜你喜欢
  • 2021-08-16
  • 2022-12-23
  • 2021-12-23
  • 2021-06-14
  • 2022-03-06
  • 2022-01-06
  • 2022-12-23
相关资源
相似解决方案