前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之工厂方法模式

设计模式之工厂方法模式

作者头像
tanoak
发布2018-08-21 15:17:58
2610
发布2018-08-21 15:17:58
举报
文章被收录于专栏:java闲聊

在上篇文章中我们探讨了简单工厂的好处,那么工厂方法模式比简单工厂有什么优势呢?

  • 抽象工厂对扩展开放,对修改也开放,违反了“开闭原则”,反之就是工厂方法模式的优势 区别: 简单工厂模式的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖
代码语言:javascript
复制
public class Apple implements Fruit {

    @Override
    public void color() {
        System.out.println("this is Apple ,color Red");
    }
}
代码语言:javascript
复制
public class AppleCreator implements Creator {

    @Override
    public Fruit createFruit() {
        return new Apple() ;
    }
}
代码语言:javascript
复制
public class Pear implements Fruit {
    @Override
    public void color() {
        System.out.println("this is pear ,color yellow");
    }
}
代码语言:javascript
复制
public class PearCreator implements Creator {

    @Override
    public Fruit createFruit() {
        return new Pear() ;
    }
}
代码语言:javascript
复制
public interface Creator {

    /**
     *  创建 Fruit
     * @return Fruit
     */
    Fruit createFruit();
}
代码语言:javascript
复制
package com.tanoak.create.factory.method;

public interface Fruit {
    /**
     * 水果颜色
     */
    void color();
}
代码语言:javascript
复制
package com.tanoak.create.factory.method;
public class Main {
    public static void main(String[] args) {
        /*
        Creator buldCreator = new AppleCreator();
        Fruit fruit = buldCreator.createFruit();
        fruit.color();*/

        Creator creator = new PearCreator();
        Fruit fruit = creator.createFruit();
        fruit.color();
    }
}

简单理解成小明今天想吃苹果=>指定苹果产品=>通知水果工厂生产

UML类图如下

归根到底 工厂方法模式是因为简单工厂模式违反“开闭原则”而创立的,两个模式对比可以加深理解

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档