• Java 设计模式之 简单工厂模式(静态工厂方法模式)


    简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类(或者父接口)

    简单工厂模式的  UML 图:

    (1)抽象(Product)产品角色:简单工厂模式所创建的所有对象的父类,注意,这里的父类可以是接口也可以是抽象类,它负责描述所有实例所共有的公共接口。

    (2)具体产品(Concrete Product)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。

    (3)工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用,创建所需要的产品对象。

    代码:

    (1)抽象产品角色:

    package com.liwei.factory.simple;
    /**
     * 抽象(Product)产品角色
     * 负责描述所有实例的公共接口
     * @author Administrator
     *
     */
    public interface Doll {
        public void getInfo();
    }

    (2)具体产品角色

    package com.liwei.factory.simple;
    
    public class BarbieDoll implements Doll {
    
        @Override
        public void getInfo() {
            System.out.println("我是芭比娃娃");
        }
    
    }
    package com.liwei.factory.simple;
    
    public class ClothDoll implements Doll {
    
        @Override
        public void getInfo() {
            System.out.println("我是布娃娃");
        }
    
    }

    (3)工厂角色:

    package com.liwei.factory.simple;
    
    public class DollFactory {
        public static Doll getInstance(String name){
            if("barbie".equals(name)){
                return new BarbieDoll();
            }else if("cloth".equals(name)){
                return new ClothDoll();
            }else{
                return null;
            }
        }
    }

    (4)测试类:

    package com.liwei.factory.simple;
    
    public class Client {
        public static void main(String[] args) {
            Doll doll1 = DollFactory.getInstance("cloth");
            doll1.getInfo();
            Doll doll2 = DollFactory.getInstance("barbie");
            doll2.getInfo();
        }
    }

    由原来的直接依赖,变为依赖工厂了。只是把依赖关系转移了。

  • 相关阅读:
    Mutex和Lock
    Thread和Promise以及packaged_task
    async和Future
    《并行程序设计导论》——读书笔记汇总
    UnrealEngine4蓝图可视化编程 完整例子 勘误
    BOOST下载
    sql 解析xml
    AutoResetEvent 笔记2
    ssh免密登录设置 (普通用户和root用户)
    npm设置淘宝镜像
  • 原文地址:https://www.cnblogs.com/liweiwei1419/p/4474203.html
Copyright © 2020-2023  润新知