当前位置:首页 > 编程笔记 > 正文
已解决

设计模式(二)-创建者模式(2-0)-简单工厂模式

来自网友在路上 181881提问 提问时间:2023-11-21 04:04:23阅读次数: 81

最佳答案 问答题库818位专家为你答疑解惑

一、简单工厂模式定义

客户端不需要关注创建实例的过程。于是需要通过工厂模式,要把创建对象过程和使用对象进行分离。所以客户端只要使用对象即可,而创建对象过程由一种类来负责,该类称为工厂类。

由于创建实例的方式是在静态方法里实现的,所以简单工厂模式也称为静态工厂方法模式。

特点: 创建一个工厂类,根据不同的参数来创建不同类的对象,并把该对象返回给共同的一个基类。

优点: 创建对象时,客户端不需要处理整个创建逻辑的过程。只要输入参数就可生成对应的对象。

缺点: 1)如果工厂类存在代码逻辑的错误,一经修改后,整个系统都要受到影响。2)增加了新的实现类,工厂类里静态方法也多加了一个新的创建对象,也就增加了系统的复杂度。

合理应用条件

  • 客户端不需要关心创建对象。
  • 创建的对象比较少,创建的类是比较少。

角色
抽象基类: 用以定义特征和行为的抽象接口。
实现类: 继承抽象基类,用以实现特征和行为的具体类。
工厂类: 根据不同的参数,创建不同的实现类,并赋值给基类。

请添加图片描述

二、例子

需求:
提供一辆汽车和一辆自行车。

// Vehicle 作为抽象基类public abstract class Vehicle{public abstract void make();}
// Car 继承 Vehicle 的行为特征public class Car : Vehicle{public override void make() {Console.WriteLine("Produce a Car");}}
// Bicycle 继承 Vehicle 的行为特征public class Bicycle : Vehicle{public override void make(){Console.WriteLine("Produce a Bicycle");}}//工厂类,负责根据不同的参数来创建实现类对象。public static class Factory{public static Vehicle CreateVehicle(string arg) {Vehicle vehicle = null;switch(arg){case "Car":vehicle = new Car(); break;case "Bicycle":vehicle = new Bicycle(); break;default:throw new ArgumentException("arg Invalid.new obj failed.");}return vehicle;}}class Program{static void Main(string[] args){//使用实现类对象,Factory 对客户端隐藏了创建细节。Vehicle car = Factory.CreateVehicle("Car");car.make();Vehicle bicycle = Factory.CreateVehicle("Bicycle");bicycle.make();Console.ReadLine();}}
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"设计模式(二)-创建者模式(2-0)-简单工厂模式":http://eshow365.cn/6-40882-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!