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

设计模式-工厂模式

作者: liuzhimi | 来源:发表于2019-04-13 20:36 被阅读0次

介绍

工厂模式定义创建对象的接口,让子类决定实例化哪个类。

主要解决:隐藏对象创建逻辑
使用场景
1.日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。
2.数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。
3.设计一个连接服务器的框架,需要三个协议,"POP3"、"IMAP"、"HTTP",可以把这三个作为产品类,共同实现一个接口。

优点
1.隐藏对象创建逻辑,用户只需知道名称就可以了。
2.可扩展性高如果想增加一个产品,只要扩展一个工厂类就可以。

缺点
1.类结构的复杂化。每次增加产品都需要增加一个具体类和对象实现工厂。

UML类图

代码实现

People.java

public abstract class People {

    public abstract void speak();
}

Woman.java

public class Woman extends People{

    @Override
    public void speak() {
        System.out.println("I am a woman!");
    }
}

Man.java

public class Man extends People{
    
    @Override
    public void speak() {
        System.out.println("I am a man!");
    }
}

PeopleFactory.java

public class PeopleFactory {

    public <T extends People> T create(Class<T> clz){
        People p = null;
        try {
            p = (People)Class.forName(clz.getName()).newInstance();
            p.speak();
        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        return (T)p;
    }
}

Main.java

public class Main {

    public static void main(String[] args) {
        PeopleFactory factory = new PeopleFactory();
        factory.create(Woman.class);
        factory.create(Man.class);
    }
}

输出

I am a woman!
I am a man!

相关文章

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

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

  • 工厂模式

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

  • 设计模式之工厂模式

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

  • 设计模式三、工厂模式

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

  • 设计模式一、单例模式

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

  • 单件设计模式

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

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

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

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

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

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

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

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

网友评论

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

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