美文网首页
设计模式-工厂设计模式

设计模式-工厂设计模式

作者: 秋元_92a3 | 来源:发表于2020-03-02 21:15 被阅读0次

简单工厂设计模式

简介

创建一个工厂类,根据传入参数值的不同,返回不同的实例。被创建的实例具有相同的父类或接口。
适用场景:
1、需要创建的对象比较少;简单工厂模式的if else分支不宜过多。
2、客户端不关系对象的创建过程
软件设计的开闭原则:对扩展开放;对修改关闭。当系统的业务逻辑发生改变的时候,通过扩展实现业务逻辑的变化,而不是通过修改来实现业务逻辑的变化。

示例代码

@Slf4j
public class SimplePhoneFactory {

    public static Phone createPhone(int i) {
        switch (i) {
            case 0:
                return new IPone();
            case 1:
                return new Mate();
            default:
                return new MI();
        }
    }

    public static void main(String[] args) {
        final Phone phone = createPhone(0);
        log.info("创建工厂实例:{}", phone.getName());
    }
}

工厂设计模式

简介

定义一个用于创建对象的接口,让子类决定实例化哪一个类。
每个抽象产品派生出多个具体产品,每个抽象工厂派生出多个具体工厂。每个具体工厂负责一个具体产品实例的创建。

示例代码

/**
 * @author drebander
 * @since 2020-03-02
 */
public interface PhoneFactory {
    /**
     * phone实例化
     * @return phone
     */
    Phone createPhone();
}

/**
 * 华为手机实例化工厂
 * @author drebander
 * @since 2020-03-02
 */
public class HuaWeiPhoneFactory implements PhoneFactory {

    @Override
    public Phone createPhone() {
        return new Mate();
    }
}


@Slf4j
public class FactoryTest {
    public static void main(String[] args) {
        PhoneFactory factory = new HuaWeiPhoneFacroty();
        final Phone phone = factory.createPhone();
        log.info("工厂设计模式实例化对象:{}", phone.getName());
    }
}

抽象工厂设计模式

简介

抽象工程模式:每个抽象产品派生出多个具体产品类,每个抽象工厂派生多个具体工厂类。每个具体工厂类负责一系列具体产品的实例创建。

示例代码

@Slf4j
public class FactoryTest {
    public static void main(String[] args) {
        InternetFactory appleFactory = new AppleFactory();
        final Computer computer = appleFactory.createComputer();
        final Phone phone = appleFactory.createPhone();
        log.info("抽象工厂模式实例化-电脑:{},手机:{}", computer.getName(), phone.getName());
    }
}
/**
 * @author drebander
 * @since 2020-03-02ß
 */
public class AppleFactory implements InternetFactory {
    @Override
    public Phone createPhone() {
        return new IPone();
    }

    @Override
    public Computer createComputer() {
        return new Mac();
    }
}

public interface InternetFactory {

    Phone createPhone();

    Computer createComputer();
}

附录-实体对象代码

public interface Phone {
    String getName();
}
public class IPone implements Phone {
    @Override
    public String getName() {
        return "iPhone";
    }
}
public class Mate implements Phone {
    @Override
    public String getName() {
        return "Mate";
    }
}
public class MI implements Phone {
    @Override
    public String getName() {
        return "MI";
    }
}
public interface Computer {
    String getName();
}
public class Mac implements Computer {
    @Override
    public String getName() {
        return "Mac";
    }
}

相关文章

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • 工厂模式

    java设计模式-工厂模式 工厂模式: 工厂模式是java设计模式里最常用的设计模式之一。 工厂模式属于创建型模式...

  • 单件设计模式

    一、定义 设计模式 设计模式就是一种更好的编写代码方案。 常见设计模式 工厂设计模式、抽象工厂设计模式、抽象工厂设...

  • iOS设计模式(3)适配器模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(4)抽象工...

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(一)之简单工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(二)之工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

网友评论

      本文标题:设计模式-工厂设计模式

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