利用设计模式可以使我们的代码更灵活,更容易扩展,更容易维护。各种面向对象的程序设计语言都提供了基本相同的机制:比如类、继承、派生、多态等等。但是又有各自的特色,C# 中的反射机制便是一个很重要的工具,好好地利用就可以在实际中发挥很大的作用。
我们来看一个例子:
我的程序中有需要一系列的对象,比如apple,orange…, 要想利用他们,我们就必须在程序中根据用户要求,然后一个个调用 new 操作符来生成他们,这样客户程序就要知道相应的类的信息,生成的代码显然不够灵活。我们可以在代码中不利用具体的类,而只是说明我们需要什么,然后就能够得到我们想要的对象吗?
我们都看设计模式,很多人都在那里鼓吹他们是如何如何的棒,我们看看怎么样利用他们来解决问题。目标明确了,那我们看看哪个能够符合我们的要求。《设计模式》似懂非懂的看了一些,那我们看看能够不能够“凑”上去呢?嗯,我们的程序考虑的是对象怎么创建的,创建型模式应该符合要求吧。然后我们浏览一下各模式的“意图”部分。第一个好像就撞到彩了,抽象工厂,我们看看吧,“提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类”,至少“无需指定它们具体的类”符合我们的要求。来看看它的结构吧:
我们的问题好像用不到这么复杂吧,只有orange,apple等等(应该就是product了),他们显然是一类的,都是fruit,我们只要一个生产水果的工厂就可以,左边的继承层次不要,只有一个FruitFactroy看看行不,先别管它正统不正统,实用就行。
下面的一些东西显然是我们需要的:
Public interface IFruit
{
}
public class Orange:IFruit
{
public Orange()
{
Console.WriteLine("An orange is got!");
}
}
public class Apple:IFruit
{
public Apple()
{
Console.WriteLine("An apple is got!");
}
}
我们的FruitFactory应该是怎么样呢?上面的结构图中它给的是CreateProductA,那好,我就MakeOrange,还有一个CreateProductB,我MakeOrange还不行??
public class FruitFactory
{
public Orange MakeOrange()
{
return new Orange();
}
public Apple MakeApple()
{
return new Apple();
}
}
怎么使用这个工厂呢?我们来写下面的代码:string FruitName = Console.ReadLine();
IFruit MyFruit = null;
FruitFactory MyFruitFactory = new FruitFactory();
switch (FruitName)
{
case "Orange":
MyFruit = MyFruitFactory.MakeOrange();
break;
case "Apple":
MyFruit = MyFruitFactory.MakeApple();
break;
default:
break;
}
编译运行,然后在控制台输入想要的东西,呵呵,成功了。沉浸在幸福中的你得意忘形了吧。
——部分材料整理于网络文章
分享到:
相关推荐
初识c#编程语言.md
初识C#foundation
本资源分七个文件夹,每个文件夹都是一个单独的模块,都有助于学习C#开发。15小时语音视频讲解,学习C#的千万不能错过。
初识程序设计教案.doc
c#学习第一章,初步简述C#是什么?做甚么,兼得的ppt
C# 与ASP.NET初识教程清淅版 PDF
全书共分28章,包括初识C#及其开发环境,开始C#之旅,变量与常量,表达式与运算符,字符与字符串,流程语句控制,数组和集合,属性和方法,结构和类,面向对象技术高级应用,异常处理,Windows窗体,Windows应用程序...
本课是初中信息技术初识excel的教学设计
C# Socket编程(4)初识Socket和数据流
初识C++ 初识C++ 初识C++初识C++初识C++初识C++初识C++
主要为大家详细介绍了Java设计模式适配器模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
C#语言入门详解002初识各类应用程序
C#语言入门详解003初识类与名称空间
全书共分28章,包括初识C#及其开发环境,开始C#之旅,变量与常量,表达式与运算符,字符与字符串,流程语句控制,数组和集合,属性和方法,结构和类,面向对象技术高级应用,异常处理,Windows窗体,Windows应用程序...
python 列表初识,通过此代码,你能够了解到python的列表操作
初识Modbus TCP/IP-C#编写Modbus TCP客户端程序 配合相关博文 http://blog.csdn.net/thebestleo/article/details/52331976 学习
初识云计算初识云计算初识云计算初识云计算初识云计算初识云计算初识云计算初识云计算
学习c#的基础课件,挺实用的 Visual C#.net教程 目 录 第一章 初识C# 第二章 C#程序设计基础知识 第三章 类与C#程序