[工程C#]工厂模式练习

工厂模式的关键点在于,传递的参数是工厂,可以通过那个工厂创建任意个我们想要的对象. 

[实例] 界面窗口:

   public partial class Form1 : Form
    {
        //工厂模式中的工厂父类对象
        IPhoneFactory Factory;
        public Form1()
        {
            InitializeComponent();
        }

        //在构造函数里传递factory对象.也就是说传递哪个工厂要以调用它的程序去确定.
        //也就是说,这段代码从顶层变成了一个次层代码
        //它通过构造函数传递一个工厂,然后再任意一个位置上都可以创建一个factory所对应的对象.
        //折中之后就是你本来是只能传递一个对象的,而现在是你通过一个factory对象,你可以在任意时刻创建对应的对象.
        public Form1(IPhoneFactory factory)
        {
            InitializeComponent();

            this.Factory = factory;
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            IPhone phone2= Factory.MakePhone();
            //既然它是要把new给间接掉,那为什么还要new一个factory??? 这岂不是还不如用简单工厂?
            //等价于
            IPhone phone3 = new MiPhone();
            //在主函数中用new方法是不是有问题?

        }

    }
}

这个主窗口设计中,创建了传递工厂参数的构造函数,启动调用格式如下:

            //这个你不能当做一个顶层来看,就假设这段代码就是一个中间层级的代码.然后本来是要传递对象的,结果这个对象不一定在
            //本程序中只用单例.那么就可以传递一个工厂.工厂可以随时随地制造这个对象.

            //如果是单例模型,那么就直接传对象就ok了
            Application.Run(new Form1(new MiPhoneFactory()));

至于工厂本身的构造代码其实大家都会,无需全部罗列出来.

需要有一个产品基类+工厂基类. 对于每一个产品,都要继承自产品基类;每个产品下面都要有对应的工厂类,继承自工厂基类.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值