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的思路,但其中也融合了本人的思路。

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

  • 相关阅读:
    bootstrap学习笔记一: bootstrap初认识,hello bootstrap(下)
    bootstrap学习笔记一: bootstrap初认识,hello bootstrap(上)
    AutoCompleteTextView的使用
    常用的android弹出对话框
    PopupWindow的使用
    linux udev、mdev 介绍
    linux 守护进程编程
    linux 下的文件目录操作之遍历目录
    linux 下查找图片文件方法
    linux 内核 zImage 生成过程分析
  • 原文地址:https://www.cnblogs.com/ChoviWu/p/7338784.html
Copyright © 2011-2022 走看看