zoukankan      html  css  js  c++  java
  • java 工厂模式 从无到有-到简单工厂模式-到工厂方法模式-抽象工厂模式

    工厂模式定义(百度百科):

    工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。

    一、没有使用工厂模式的实现:

    clothes做衣服接口,Jeans 牛仔裤 WorkClothes 工装裤

    package com.xxx.routine.intf;
    
    public interface clothes {
        void doclothes(); //做衣服
    }
    package com.xxx.routine.implintf;
    
    import com.xxx.routine.intf.Clothes;
    
    //牛仔裤
    public class Jeans implements Clothes {
        @Override
        public void doclothes() {
            System.out.println("做牛仔裤");
        }
    }
    package com.xxx.routine.implintf;
    
    import com.xxx.routine.intf.Clothes;
    
    //工装裤
    public class WorkClothes implements Clothes {
        @Override
        public void doclothes() {
            System.out.println("做工装裤子!");
        }
    }

    测试实现:

    package com.xxx.routine;
    
    import com.xxx.routine.implintf.Jeans;
    import com.xxx.routine.implintf.WorkClothes;
    import com.xxx.routine.intf.Clothes;
    import org.junit.jupiter.api.Test;
    import org.springframework.boot.test.context.SpringBootTest;
    
    @SpringBootTest
    class RoutineApplicationTests {
    
        @Test
        void contextLoads() {
            Clothes c1 = new Jeans();   //牛仔裤
            Clothes c2 = new WorkClothes(); //工装裤
    
            c1.doclothes();  //做牛仔裤
            c2.doclothes();  //做工装裤
        }
    }
    -------------输出-----------

    做牛仔裤
    做工装裤子!

    二、简单工厂模式:

    【来源百度百科】简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

    简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

    工厂(Creator)角色
    简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
    抽象产品(Product)角色
    简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
    具体产品(Concrete Product)角色
    是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。
    package com.xxx.routine.factory;
    
    import com.xxx.routine.implintf.Jeans;
    import com.xxx.routine.implintf.WorkClothes;
    import com.xxx.routine.intf.Clothes;
    
    //做衣服工厂
    public class ClothesFactory {
        public static Clothes createClothes(String type){
            if("jeans".equals(type)){
                return new Jeans();
            }else if ("workclothes".equals(type)){
                return new WorkClothes();
            }else {
                return null;
            }
        }
    }
        @Test //简单工厂方法测试
        void SimpleFactory(){
            Clothes jeans = ClothesFactory.createClothes("jeans");
            Clothes workclothes = ClothesFactory.createClothes("workclothes");
    
            jeans.doclothes();
            workclothes.doclothes();
        }
    //-------------------输出结果
    做牛仔裤
    做工装裤子!

     【尽快补充上,谢谢理解~!】

  • 相关阅读:
    angularjs 判断是否包含 permIDs|filter:'10'
    js日期格式化
    JSON格式检验
    CodeSmith Generator 6.5
    Hosts文件说明
    正则表达式匹配换行实例代码
    Codeforces 311E Biologist
    URAL 1349 Farm
    [SDOI2015] 序列统计
    洛谷 P3803 多项式乘法
  • 原文地址:https://www.cnblogs.com/belen87/p/11930407.html
Copyright © 2011-2022 走看看