美文网首页
设计模式--创建型

设计模式--创建型

作者: emdd2016 | 来源:发表于2021-05-11 10:38 被阅读0次

工厂模式是将对象的创建和使用分开,使用者只用关心使用而不需要去关心对象的创建。

简单工厂模式

  1. 通过type 来生产不同的类对象
  /**
     * 根据不同的类型来创建不同的对象
     * @param type
     * @return
     */
    public  static Snacks getSnacks (int type) {
        if (type == TYPE_CHEESE){
            return new Cheese() ;
        }else if (type == TYPE_PUDDING){
            return new Pudding();
        } 
        return null; 
    }
  1. 通过工厂方法类获取不同类的对象---避免了修改getObjectByType ()方法, 添加新的类对象获取的时候只需要新增一个获取方法即可
 /**
     * 获取奶酪
     * @return
     */
    public  static  Snacks getCheese () {
        return new Cheese();
    }

    /**
     * 获取布丁
     * @return
     */
    public static  Snacks getPudding (){
        return new Pudding() ; 
    }

工厂方法模式

工厂方法模式是简单工厂模式的升级, 它是由于简单工厂模式不符合 软件设计6大原则中的: 单一职责原则 和 开闭原则 而出现的。 它在新增类对象获取的时候只需要扩展新的Factory即可,不需要去修改已有的Factory。 它将将工厂类抽象出一个接口,对象的创建方法延迟到工厂子类去实现;是多工厂形式。
它的缺点是:构造了太多的Factory,很冗余 。 实际运用视情况而定

/**
 * @author spark on 2021/5/11
 * @description 工厂类接口
 */
interface AbstractSnacksCreateFactory {

         Snacks getSnacks ();
}
/**
 * @author spark on 2021/5/11
 * @description 奶酪类的Factory
 */
public class CheeseFactory implements  AbstractSnacksCreateFactory{
    @Override
    public Snacks getSnacks() {
        return new Cheese();
    }
}

如果后边要新增 果冻类的创建 只需要构想一个果冻类Factory 实现AbstractSnacksCreateFactory 即可。

抽象工厂模式

解决了多个工厂匹配混乱的问题
比如: 奶酪有奶酪的包装Factory, 布丁有布丁的包装Factory,如果不统一管理,可能就会出现奶酪用了布丁的包装,或者布丁用了奶酪的包装,造成混乱。
此时我们就需要 将匹配集合抽象出一个工厂集合接口

/**
 * @author spark on 2021/5/11
 * @description 包装和零食的获取 抽象出来一个接口
 */
public interface AbstractFactory {
    // 获取零食
    Snacks getSnacks ();
    // 获取零食包装
    Bag getBag ();
}

/**
 * @author spark on 2021/5/11
 * @description 获取带包装的奶酪
 */
public class CheeseWithBagFactory implements  AbstractFactory {
    private  CheeseFactory cheeseFactory = new CheeseFactory();
    private  CheeseBagFactory cheeseBagFactory = new CheeseBagFactory();

    @Override
    public Snacks getSnacks() {
        return cheeseFactory.getSnacks();
    }

    @Override
    public Bag getBag() {
        return cheeseBagFactory.getBag();
    }
}

建造者模式

使用者不用去关心对象的创建,也不要了解所有的参数,需要用到什么就用相关参数去获取对象即可。
场景: 当一个类的构造函数参数个数超过4个,并且这些参数有些是可选的参数,这个时候就可以考虑使用建造者模式。

相关文章

  • 23种设计模式总结一

    23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型。 一、创建型设计模式 创建型设计模式包括:单...

  • 创建型设计模式总结

    创建型设计模式总结 Intro 前面几篇文章已经把创建型设计模式都介绍了,来做一个简单的总结。 创建型设计模式,就...

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

  • 设计模式归纳

    一、设计模式的分类 23 种经典的设计模式分为三类:创建型、结构型、行为型。 1.创建型设计模式主要解决“对象的创...

  • 设计模式--分类

    一、设计模式的分类设计模式可以概括为23种,按照特点可以将其分为三大类型:创建型、结构型、行为型。1、创建型创建型...

  • 单例模式

    单例 单例模式,是一种设计模式,属于创建型设计模式,还有一种创建型设计模式,工厂模式。设计模式总共有23种,三大类...

  • 《设计模式之美》- 23种设计模式

    学习《设计模式之美》笔记。 23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型 创建型模式 创建...

  • 设计模式简单总结(待完善)

    设计模式简单总结 设计模式可以分为:创建型,结构型,行为型三种模式。 1 创建型模式 1.1 单例模式 用来指定某...

  • 开发之设计模式-单例模式

    设计模式 设计模式分为三大类:创建型、结构型、行为型在Java中有24中设计模式 创建型:单例 1、为什么用单例模...

  • 设计模式(行为型)-- 观察者模式

    我们常把 23 种经典的设计模式分为三类:创建型、结构型、行为型。创建型设计模式主要解决“对象的创建”问题,结构型...

网友评论

      本文标题:设计模式--创建型

      本文链接:https://www.haomeiwen.com/subject/ghjgdltx.html