做译员的网站,企业营销网站案例,crm系统官网,黑色网站后台一、简单工厂模式定义
客户端不需要关注创建实例的过程。于是需要通过工厂模式#xff0c;要把创建对象过程和使用对象进行分离。所以客户端只要使用对象即可#xff0c;而创建对象过程由一种类来负责#xff0c;该类称为工厂类。
由于创建实例的方式是在静态方法里实现的…一、简单工厂模式定义
客户端不需要关注创建实例的过程。于是需要通过工厂模式要把创建对象过程和使用对象进行分离。所以客户端只要使用对象即可而创建对象过程由一种类来负责该类称为工厂类。
由于创建实例的方式是在静态方法里实现的所以简单工厂模式也称为静态工厂方法模式。
特点 创建一个工厂类根据不同的参数来创建不同类的对象并把该对象返回给共同的一个基类。
优点 创建对象时客户端不需要处理整个创建逻辑的过程。只要输入参数就可生成对应的对象。
缺点 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();}}