分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

asp.net—工厂模式

发布时间:2023-09-06 02:26责任编辑:顾先生关键词:暂无标签

一、什么是工厂模式

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

二、怎么使用工厂模式

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

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

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

 //抽象一个汽车类 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—工厂模式

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved