工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码.
[java] view plaincopy
- public interface Sender {
- public void Send();
- }
两个实现类:
[java] view plaincopy
- public class MailSender implements Sender {
- @Override
- public void Send() {
- System.out.println("this is mailsender!");
- }
- }
[java] view plaincopy
- public class SmsSender implements Sender {
- @Override
- public void Send() {
- System.out.println("this is sms sender!");
- }
- }
两个工厂类:
[java] view plaincopy
- public class SendMailFactory implements Provider {
- @Override
- public Sender produce(){
- return new MailSender();
- }
- }
[java] view plaincopy
- public class SendSmsFactory implements Provider{
- @Override
- public Sender produce() {
- return new SmsSender();
- }
- }
在提供一个接口:
[java] view plaincopy
- public interface Provider {
- public Sender produce();
- }
测试类:
[java] view plaincopy
- public class Test {
- public static void main(String[] args) {
- Provider provider = new SendMailFactory();
- Sender sender = provider.produce();
- sender.Send();
- }
- }
其实这个模式的好处就是,如果你现在想增加一个功能:发及时信息,则只需做一个实现类,实现Sender接口,同时做一个工厂类,实现Provider接口,就OK了,无需去改动现成的代码。这样做,拓展性较好!
但是这容易造成工厂类的膨胀。可能与实际的工业经济有点不符,因为一个工厂基本上都是可以创造很多产品的,而不是有新的产品就一定需要新的工厂。
当然,如果说代码的工厂模式里新增的功能完全异于已有的功能,就貌似工厂要开辟新的生产线,当然这个时候就要考虑新建工厂了。
实体经济里,一个企业需要不断地创建工厂,一个原因是经济的转型加快,一个是刚开始考虑的问题不全。如果是外部无法抗拒的原因,我们可以不去评论,但是由于自身刚开始的规划和战略考虑不周,那就是刚开始系统架构的问题了,对于web应用也是如此。考虑了工厂模式,那么相对的变化就比较小。不过话又说回来,软件架构的工厂模式的修改,相对实体经济来说,会简单一些
相关推荐
NULL 博文链接:https://hnzhoujunmei.iteye.com/blog/1032977
博客 走进设计模式之抽象工厂(Abstract Factory) 对应代码
3、抽象工厂模式(Abstract Factory Pattern) 用意:一个工厂生产一系列产品
C#设计模式之抽象工厂(abstract factory)模式示例源代码
抽象工厂模式(Abstract Factory Pattern) 引入: 在前面介绍的两个创建型模式里面,我们解决的都是有关"new"的问题,用它们来避免显式指定类创建对象。我写的也非常简单易懂,相信看过的朋友们都应该对简单工厂...
设计模式抽象工厂模式(AbstractFactory)源代码
设计模式C++学习之抽象工厂模式(AbstractFactory)
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。
java之 抽象工厂模式(abstract factory) 之水果类和蔬菜类 (香蕉、梨、黄瓜、大蒜),北方市场,南方市场。。
Abstract_Factory抽象工厂Abstract_Factory抽象工厂Abstract_Factory抽象工厂Abstract_Factory抽象工厂
设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)
在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),...这就是我们要说的抽象工厂模式。
生产餐具和相应食物的工厂,有两个车间,其中一个车间用以生产餐具,一个车间用以生产相应的食物。 每个具体工厂生产出来的具体产品根据不同工厂的不同各不相同,但是客户使用产品的方法是一致的。比如客户在得到...
NULL 博文链接:https://conkeyn.iteye.com/blog/1245113
NULL 博文链接:https://zhouhaitao.iteye.com/blog/1003684
设计模式,AbstractFactory,抽象工厂模式
抽象工厂模式可以实现不同数据库之间的无缝移植。 该项目是在三层架构的基础上改进的。希望对初学者有帮助。
Abstract Factory模式 1 定义创建对象的接口,并封装对象的创建 2 将具体化类的工作延迟到了类中 3 创建创建一组相关对象或者说是一组相互依赖的对象 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来...
里面是整个抽象工厂的实现,具体可以参见我的博客 http://blog.csdn.net/renlei0109/article/details/25242983
6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器模式ADAPTER PATTERN 9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER PATTERN 11、桥梁模式BRIDGE PATTERN 12、...