码迷,mamicode.com
首页 > Web开发 > 详细

asp.net—工厂模式

时间:2018-12-12 19:11:06      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:class   怎么   asp.net   创建对象   模式   表达   tor   场景   中国   

一、什么是工厂模式

  定义:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类。

二、怎么使用工厂模式

  首先模拟一个场景:有一个汽车工厂,  可以日本车、美国车、中国车。。。

  这个场景怎么用工厂模式表达出来呢?

  要生产汽车所以首先要有个汽车类

 

 //抽象一个汽车类
 public abstract class CarBreed
 {
     public string Name {get;set;}
 }
 
 public class JapanCar : CarBreed
 {
     public JapanCar(){
         Console.WriteLine("日本车");
     }
 }
  public class ChineseCar : CarBreed
 {
     public ChineseCar(){
         Console.WriteLine("中国车");
     }
 }
  public class USACar : CarBreed
 {
     public USACar(){
         Console.WriteLine("美国车");
     }
 }

 

 

 

  然后就是要有工厂来生产

//汽车工厂(抽象工厂类)
 public abstract class CarFactory
 {
     public abstract CarBreed getCarBreed();     
 }
 //日本车工厂
 public class JapanCarFactory : CarFactory
 {
     public override  CarBreed getCarBreed()
     {
         return new JapanCar();
     }
 }
  //中国车工厂
 public class ChineseCarFactory : CarFactory
 {
     public override  CarBreed getCarBreed()
     {
         return new ChineseCar();
     }
 }
  //美国车工厂
  public class USACarFactory : CarFactory
 {
     public override  CarBreed getCarBreed()
     {
         return new USACar();
     }
 }

  最后就是输出:

 //程序入口
 public class Program
 {
     public static void Main(string[] args)
     {
         // 初始化工厂
         CarFactory Factory = new JapanCarFactory();
         //日本车
         CarBreed mycar = Factory.getCarBreed();
         //中国车
         Factory = new ChineseCarFactory();
         mycar = Factory.getCarBreed();
         //。。。。。。。
         Console.ReadLine();
     }
 }

三、为什么要用工厂模式 

  优势1:一般在代码中,实例化一个类A是直接new A(),假如类A是一个完全独立的类,没有相似类,则没有必要使用工厂模式。但是如果类A本身有一个相似类B,而在实际使用类A或者类B的实例时,如果关心的是类A与类B的共同部分,则工厂模式就可以体现出它的优势。
  优势2:初始化封装。在需求一个类的实例时,假如需要一个相同属性的实例,每次初始化的操作是一样的,用工厂模式可以对初始化进行封装,简化操作。

四、工厂模式使用场景

  (1)客户端不需要知道它所创建的对象的类。例子中我们不知道每个图片加载器具体叫什么名,只知道创建它的工厂名就完成了床架过程。
  (2)客户端可以通过子类来指定创建对应的对象。

asp.net—工厂模式

标签:class   怎么   asp.net   创建对象   模式   表达   tor   场景   中国   

原文地址:https://www.cnblogs.com/witeem/p/10109830.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!