UML |
您所在的位置:网站首页 › uml类图抽象方法 › UML |
简单工厂、工厂方法、抽象工厂三种模式总是不能正确区分,以下是自己浅薄的理解。并附上一个还不错的详解博客 简单工厂:一个工厂一条产品线生产所有产品,如果想要新的产品,则要修改产品线。 工厂方法:一个工厂,多条产品线。如果想要新产品,则增加产品线 抽象工厂:一个工厂,多条产品线,每条产品线可以生成多个不同种类的产品 .
简单工厂模式: 看一个披萨的项目:要便于披萨种类的扩展,要便于维护 1)披萨的种类很多(比如 GreekPizz、 Cheese pizz等) 2)披萨的制作有 prepare,bake, cut, box 3)完成披萨店订购功能。
增加一个PepperPizza时,所有的店面进行的OrderPizza操作都要进行修改,这是不理想的情况。 优缺点分析 : 1、优点:比较好理解,简单易操作 2、缺点:违反了设计模式的 ocp原则(对扩展开放,对修改关闭)。即:当我们给类增加新功能的时候,尽量不修改代码,或者少修改代码。 3、如果新增一个 Pizza 种类,则订购 Pizza 的代码都要修改。(下面的代码是传统方法)
orderPizza会传入一个SimpleFactory类型的对象, 该简单工厂对象会根据用户输入的披萨种类调用creatpizza方法,生产一个“某种种类”的pizza饼,返回给orderpizza orderpizza会将pizza饼进行prepare、bake、cut、box操作。
如果新加入一种种类的Pizza、一个新的店面,只需要修改SimpleFactory中的代码即可: 在上述代码的结尾加上“ChinaPizza”即可。
工厂方法模式 新需求:客户在点 披萨时,点不同口味的 Pizza ,比如 北京的奶酪披萨、北京的芝士披萨、洛杉矶的胡椒披萨 思路1:使用 简单工厂模式,创建不同的简单工厂类,比如 BJPizzaSimpleFactory 、LSJPizzaSimpleFactory 等等。这种方法满足了当前的需求,但考虑到项目的规模,软件的可维护性、可扩展性 并不好。 思路2:工厂方法模式 工厂方法模式介绍 1、工厂方法模式设计方案:将披萨项目的实例化功能抽象成抽象方法,在不同的口味点 餐子类中具体实现。 2、工厂方法模式:定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类。 应用案例 1、披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪 pizza、北京的胡椒pizza 或者是伦敦的奶酪pizza、伦敦的胡椒pizza 2、思路分析图解
抽象工厂模式 基本介绍 1)抽象工厂模式:定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类 2)抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合 3)从设计层面看,抽象工厂模式就是对简单工厂模式的改进(或者称为进一步的抽象 4)将工厂抽象成两层: AbsFactory(抽象工厂)和具体实现的工厂子类。 程序员可以根据创建对象类型使用对应的工厂子类。这样将单个的简单工厂类变成了工厂簇更利于代码的维护和扩展。 5)类图
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |