factory-method 怎样实现注解
答案:2 悬赏:20 手机版
解决时间 2021-01-29 04:13
- 提问者网友:最美的风景
- 2021-01-28 11:40
factory-method 怎样实现注解
最佳答案
- 五星知识达人网友:孤独入客枕
- 2021-01-28 12:56
要想方便点的话,在代码模式下,右击工具栏,在弹出菜单里把“编辑”项选中(如果已经选中就不必选了),我用的是英文版的是edit,这时候编辑工具栏就显示出来了。选中要注释的行,然后点编辑工具栏里有几条横线的那个图标(在一个手形图标的后边,中间是蓝,上下是黑色的),就是进行块注释,要取消注释,点快注释后边那个带箭头的图标就可以了。
全部回答
- 1楼网友:行路难
- 2021-01-28 14:28
为了区分factory method和abstract factory的区别,查阅了些资料,总算有点感悟,下面是本人的感悟的总结。
在设计模式中,factory method和abstract factory的区别并不容易理解,主要是abstrct factory一般情况下是要通过factory method来实现,或者说abstract factory包含factroy method。
从字面上来理解,factory method强调的是method,abstract factory强调的是抽象类,也就是继承关系。
下面,将使用例子来对比factory method和abstract factory。
有两种不同的产品,分别是电视和收音机,下面分别用factory method和abstract factory模式对两种产品进行创建。
(1) factory method模式主要通过工厂类的方法的多态来实现对多种不同产品的创建。其c#示例代码如下所示。
namespace factorymethod
{
class program
{
public interface iproduct
{
void productname();
}
public class cradio : iproduct
{
public void productname()
{
console.writeline("radio");
}
}
public class ctv : iproduct
{
public void productname()
{
console.writeline("tv");
}
}
public interface ifactory
{
iproduct createproduct(string productname);
}
public class cconcretefactory
{
public iproduct createproduct(string productname)
{
if (0 == productname.compareto("tv"))
{
return new ctv();
}
else
{
return new cradio();
}
}
}
static void main(string[] args)
{
cconcretefactory confactory = new cconcretefactory();
iproduct tvproduct = confactory.createproduct("tv");
tvproduct.productname();
iproduct radioproduct = confactory.createproduct("radio");
radioproduct.productname();
console.read();
}
}
}
(2) abstractfactory模式主要是通过工厂类的不同的子类来实现不同类别的产品的创建。其c#示例代码如下所示:
namespace abstractfactory
{
class program
{
public interface iproduct
{
void productname();
}
public class cradio : iproduct
{
public void productname()
{
console.writeline("radio");
}
}
public class ctv : iproduct
{
public void productname()
{
console.writeline("tv");
}
}
public interface ifactory
{
iproduct createproduct(string productname);
}
public class cradiofactory
{
public iproduct createproduct()
{
return new cradio();
}
}
public class ctvfactory
{
public iproduct createproduct()
{
return new ctv();
}
}
static void main(string[] args)
{
ctvfactory tvfactory = new ctvfactory();
iproduct tvproduct = tvfactory.createproduct();
tvproduct.productname();
cradiofactory radiofactory = new cradiofactory();
iproduct radioproduct = radiofactory.createproduct();
radioproduct.productname();
console.read();
}
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯