三个工厂有什么区别
2017-08-06 21:54
281 查看
工厂模式的好处就在于将工厂和产品之间的耦合降低,将具体产品的构造过程放在了具体工厂类里面。在以后扩展产品的时候方便很多,只需要添加一个工厂类,一个产品类,就能方便的添加产品,而不需要修改原有的代码。而在简单工厂中,如果要增加一个产品,则需要修改工厂类,增加if/else分支,或者增加一个case分支,工厂模式符合软件开发中的OCP原则(open close principle),对扩展开放,对修改关闭。
抽象工厂模式:这个模式我总是感觉和builder模式非常相似。
工厂方法模式提供的是对一个产品的等级模式,,而抽象工厂方法提供的是对多个产品的等级模式,注意,这里的多个具体产品之间是相互耦合的,也就是说这里的抽象工厂提供的产品之间是存在某种联系的。
有人做如下的比较:
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类可以创建多个具体产品类的实例。
区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
抽象工厂模式:这个模式我总是感觉和builder模式非常相似。
工厂方法模式提供的是对一个产品的等级模式,,而抽象工厂方法提供的是对多个产品的等级模式,注意,这里的多个具体产品之间是相互耦合的,也就是说这里的抽象工厂提供的产品之间是存在某种联系的。
有人做如下的比较:
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类可以创建多个具体产品类的实例。
区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
相关文章推荐
- Bean 工厂和 Application contexts 有什么区别?
- char * const p char const * p const char *p 三个有什么区别?
- 请教:DBNULL和String.Empty和"" ,使用这三个有什么区别?
- Bean 工厂和 Application contexts 有什么区别?
- 关于css选择器的问题 + * ~这三个有什么区别
- allegro中Autosilk top, Silkscreen top 和Assembly top三个什么区别
- 因特网,以太网和互联网,三个有什么区别?
- allegro中Autosilk top, Silkscreen top 和Assembly top三个什么区别(转)
- TCP/IP、Http、Soap三个基本的通讯协议有什么区别?
- Bean 工厂和 Application contexts 有什么区别?
- Visual Studio 2005三个版本有什么区别
- init()方法里的这三个,有什么区别?this.getServletConfig().getInitParameter("username")+"----"+this.getServletConte
- Bean 工厂和 Application contexts 有什么区别?
- 三个工厂模式的区别
- v$sqlarea,v$sql,v$sqltext这三个视图提供的sql语句有什么区别
- 三个实体型之间的多对多联系和两两之间的三个多对多联系有什么区别
- javascript中的=等号个数问题两个跟三个有什么区别
- 下面三个导航栏Item有什么区别啊???
- JavaScript里面三个等号和两个等号有什么区别?
- allegro中Autosilk top, Silkscreen top 和Assembly top三个什么区别