zoukankan      html  css  js  c++  java
  • Java工厂模式浅析理解

    由于本人缺乏工作经验,本篇文章作为随笔,只是对工厂模式有一个简单的认识

    工厂模式分为以下三种:

    1:简单工厂(Simple Factory)。
    2:工厂方法(Factory Method)。
    3:抽象工厂(Abstract Factory)。

    本次模拟的是第三种——抽象工厂

    抽象工厂的大致思路

      多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
      一个抽象工厂类,可以派生出多个具体工厂类。
       每个具体工厂类可以创建多个具体产品类的实例。

    好了,不多说,根据上面的思路来贴一下部分代码

    在这里,我是以汽车、食物两种类别来进行模拟

    汽车——宝马、奔驰

    食物——苹果、橘子

    首先编写食物类,在这里,我将Food作为抽象类(也可作为接口)

    public abstract class Food {
    
        public abstract void eat();
    }

    汽车也一样

    public abstract class Car {
    
        public abstract void creat();
    }

    然后将,宝马,奔驰继承Car ,橘子,苹果继承食物

    public class Apple extends Food{
    
        public Apple() {
            super();
            this.eat();
        }
        @Override
        public void eat() {
            System.out.println("Apple...eat");
            
        }
    
    }
    public class Benz extends Car{
    
        @Override
        public void creat() {
            System.out.println("benz...creat");
        }
    
    }
    public class Orange extends Food{
    
        @Override
        public void eat() {
            System.out.println("Orange...eat");        
        }
    public class BMW  extends Car{
    
        @Override
        public void creat() {
            System.out.println("BMW...creat");       
        }
    
    }

    然后,下一个思路就是将工厂分为A和B 实现分类显示的功能,在这里我将Apple和BMW作为FactoryA ,Orange和Benz作为FactoryB

    并且,将FactoryA和FactoryB实现Factory的接口以实现分类的效果

    public class Factory1 implements Factory {
        public Car creat() {
            return new Benz();
        }
        public Food eat() {
            return new Apple();
        }
    
    }

    至此,以达到需要的效果

    当调用FactoryA时,控制台打印出Apple,BMW  

    当调用FactoryA时,控制台打印出Orange,Benz

    声明:本篇文章理解于 http://www.cnblogs.com/zhouqiang/archive/2012/07/20/2601365.html的思路,但其中也融合了本人的思路。

    如有其他意见,请评论版上评论,谢谢

  • 相关阅读:
    引用传递函数值
    关于引用(python中的伪指针)的理解
    学生管理系统_排序后通过name删除列表里的字典
    学生管理系统(函数版)
    全局变量和局部变量的理解
    lambda隐藏函数的嵌套
    lambda函数常见用法
    函数的多个返回值
    函数的函数名重名
    函数的嵌套
  • 原文地址:https://www.cnblogs.com/ChoviWu/p/7338784.html
Copyright © 2011-2022 走看看