什么是工厂方法以及为什么使用它们?

了解什么是系统设计方法方面的工厂方法。 我也将解释如何使用这些方法来编写更高效的代码。

A+ A-

的工厂方法的概念是非常有用的,并在同一时间也很简单。 这是很简单的解释,我也不会需要写一个长职位的!

基本上工厂方法是返回一个对象(就像一个工厂生产的商品-a工厂方法生产的对象 - 和,这就是为什么名字)的方法。 为了用一个例子了解它,让我们假设你有一个接口,非常创造性地称为MyInterface的 ,要实现。 所以,你实现它在一个名为类,说,FirstImplementation。 然后你能使你的软件,也就是说,120余其他类使用FirstImplementation的。 一切OK为止!......但是,如果你需要使用不同的实现MyInterface的将出现的问题。 您的选择将是:

  1. 覆盖在FirstImplementation代码与新执行代码
  2. 写在另一个类中,比方说,SecondImplementation新的实施和改变所有的120奇数类来指SecondImplementation。
  3. 使用工厂类

好了,第一个选项是可行的。 但在这种情况下,你将失去FirstImplementation的代码。 这不是解决问​​题的一个非常整洁的方式。

第二个选择就是噩梦! 只有程序员勤奋如计算机会尝试它,你将不得不改变120余班。

第三个选项是美丽,整洁和聪明。 你只需创建一个新的中间阶层,说FactoryClass,并使用这个类来获取FirstImplementation的实例在120多类。 现在,如果你需要-所有你需要做的,使用不同的实现MyInterface的是刚刚修改FactoryClass的代码。

 公共接口MyInterface的{
//定义成员
}

公共类FirstImplementation {
//实现MyInterface
}

公共类FactoryClass {

//构造函数来这里

//写如果neede更多的方法
公共MyInterface的的getInstance(){
MyInterface的一个=新FirstImplementation();
返回;
}

公共类UserClass的{
FactoryClass faObj =新FactoryClass();
MyInterface的myInter = faObj.getInstance();
}

所以,现在如果你决定-所有你需要做的是改变了FactoryClass代码来实现MyInterface作为SecondImplementation。你不需要触摸UserClass的 (ES)为这一点。

你的想法? 如果你仍然在有关工厂方法的概念疑问,请随时提出意见,并问我。 我会尽力帮助你的。

Ads

分享

最近

最好的Ubuntu的替代寻找,如果你是一个Linux爱好者

首先,让我们越来越熟悉的东西; 基本的,但有点偏离轨道! 你有没有得到使用Linux和Ubuntu方面困惑? 你任何机...

如何在Gmail收件箱中添加签名 - 添加在Gmail谷歌的签名

收件箱由谷歌为谷歌的在过去几年推出的最好的事情之一。 它带入一个统一的收件箱几乎所有我们想要的一切。 我们必须说,设计...

每周科技新闻:诺基亚,谷歌和任天堂

大家好,这是星期五,3月3日,只是像往常一样,我们又回到我们的每周新闻综述。 本周的新闻有很多有趣的报道。 从诺基亚的...

树莓派项目入门 - 你可以用树莓派做些什么

树莓Pi为一系列低功耗,由莓裨基金会创建单板计算机。 最初创建教孩子们计算机科学和编程的基础知识在发展中国家中,树莓派...

Android的2017年最佳VPN - 如何使用VPN在安卓

一去不复返的VPN只为高科技,savvies和黑客的天! 而且,承认这一点,我们已经受够了易怒的演讲有关这些服务的。 ...

注释