设计模式之—简单工厂设计模式

上传人:fgh****35 文档编号:172624751 上传时间:2022-12-05 格式:DOC 页数:9 大小:215KB
返回 下载 相关 举报
设计模式之—简单工厂设计模式_第1页
第1页 / 共9页
设计模式之—简单工厂设计模式_第2页
第2页 / 共9页
设计模式之—简单工厂设计模式_第3页
第3页 / 共9页
点击查看更多>>
资源描述
设计模式之简单工厂设计模式今天分享设计模式中最简单的一种模式 简单工厂模式。先从面向对象说起,面向对象有三大特性:继承,封装,多态。所谓封装:在面向对象语言中,我们都是以类来组织代码,类中定义了属性和方法,我们在调用的时候只需要去使用对象的方法名或者属性名就可以了,而不必甚至不需要知道方法的具体实现,类比生活中的例子,榨汁机。我们只知道用它可以榨果汁,放个苹果给我们一杯苹果汁,放个桔子给我们一杯桔子汁就可以了。我们不必要去关心 榨汁机是怎么去工作的。所谓继承:就是子类继承了父类,父类所有的非私有的方法和属性,子类都可以拿来直接使用。就好比生活中,父亲给儿子留了一笔遗产。你可以直接使用这笔钱而不需要去创造这笔钱然后在去使用。所谓多态:一个类可以有多个子类,而每个子类只能由一个父类,就好比。一个父亲可以有多个儿子,而每个儿子只可以有一个父亲。对于多态我们有2种理解。第一种是不同的人对同一件事所做的不同反应,例如 工作,对于农民来说就是种地,科学家 搞科研,工人 上班,学生 做作业。第二种是同一个人 在不同情况下,具有不同的身份和角色,例如 同样是你,在公司你可能是员工,在家里 你是你父母的儿子,在路上你是行人。先来看一个简单的例子:我们首先定义一个父类Person类:/ / 定义父类Person/ public class Personpublic string Name get; set; public int Age get; set; / / 自我介绍/ public void SayHi()Console.WriteLine(大家好我是 + Name + ,我今年 + Age + 岁了!);定义2个子类,一个Student类,一个Teacher类public class Student : Personpublic class Teacher: Person在控制台中访问:static void Main(string args)Student s = new Student();s.Name = 张三;s.Age = 20;s.SayHi();输出:可以看出子类是可以使用父类的非私有的属性和方法。当然 老师的自我介绍和学生自我介绍肯定不一样。如果我们要实现 老师的自我介绍是 大家好。我是XX老师,我今年工作几年了。 学生的自我介绍是大家好。我是某某学生,我今年多少岁了,应该怎么做呢。如下图:编译器会有警告,因为我们在基类中已经使用了SayHi方法来做自我介绍。为了能更好的解决问题。我们就要用到多态了。我们把基类Person类改写成抽象类,把基类中的SayHi方法改写成抽象方法。直接上图:/ 定义父类Person/ public abstract class Personpublic string Name get; set; public int Age get; set; / / 自我介绍/ /public void SayHi()/ Console.WriteLine(大家好我是 + Name + ,我今年 + Age + 岁了!);/ / 抽象方法,自我介绍/ 抽象方法没有具体实现,只能通过子类覆写来实现。/ public abstract void SayHi();子类 public class Teacher : Personpublic int YearOfWork get; set; public override void SayHi()Console.WriteLine(大家好我是 + Name + 老师,我工作 + YearOfWork + 年了!);public class Student : Person/ / 重写基类自我介绍方法/ public override void SayHi()Console.WriteLine(大家好我是 + Name + ,我今年 + Age + 岁了!);在Main方法中 定义如下static void Main(string args)Teacher t = new Teacher();t.Name = AAA;t.YearOfWork = 5;t.SayHi();Person p = new Teacher() Age = 18, Name = 李四, YearOfWork = 5 ;p.SayHi();输出结果 如上图 我们可以看到 p 和t 都是调用的teacher类中的sayhi方法。 这就是多态。子类通过覆写 父类中的抽象方法或者虚方法来实现。这个也叫里氏替换原则 就是凡是父类出现的地方子类都可以出现。 试想一下 如果 Person类不定义为抽象类。以上2个输出结果会有什么不同。简单工厂正是 基于以上原则来实现的。以上是对面向对象的一个简单回顾。下面我们来讲 简单工厂设计模式。设计模式不是一种新的技术,只是在编写代码中一些好的方式的积累和经验的积累。从上图 我们可以看出:从结构可以看出,工厂依赖于所有的子类产品,客户只需知道父类产品和工厂即可。工厂是整个模式的核心,以不变应万变。在现实生活中 我们知道。工厂是用来生产产品的。在面向对象的技术里面工厂也是用来生产产品的。在这里我们的工厂是用来给类生产对象的。在前面我们简单介绍过封装 继承 多态。那么在使用简单工厂模式的时候我们首先要定义好角色。父类 ,子类 和工厂类。 子类继承父类。 父类定义子类要实现的方法。工厂 创建类的对象。客户调用的时候只需要 知道工厂类和父类就可以了。上图红线标注。我们以生活中的例子来说明。首先我们创建一个父类 。我们知道车有很多。什么宝马 奔驰。等等。我们先定义一个父类 。小汽车类using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Demo/ / 父类/ public abstract class Carpublic abstract void Run();在来定义2个子类 ,子类继承父类 一个是宝马汽车类:/ / 子类1/ public class BMWCar:Carpublic override void Run()Console.WriteLine(宝马轿车在行驶!);/ / 子类2/ public class BenzCar:Carpublic override void Run()Console.WriteLine(奔驰轿车在行驶!);在来定义一个工厂类/ / 工厂/ public class Factorypublic static Car CreateCar(string carType)Car car = null;switch (carType)case BMW:car = new BMWCar();break;case Benz:car = new BenzCar();break;return car;在工厂类中。我们定义了一来Create方法。用来创建对象。通过父类对象来返回我们创建的对象。在Main方法 中调用 就是上图中的客户端。我们只需要关注父类和工厂 。Car car = Factory.CreateCar(Benz);car.Run();运行结果 就是 :奔驰汽车在行驶。本文由
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!