zoukankan      html  css  js  c++  java
  • 抽象工厂(Abstract Factory)

      工厂模式最终可以完成  

        1.任意定制交通工具

        2.任意定制生产过程 -- 工厂方法实现

        3.任意定制产品一族  -- 抽象工厂实现

      

    抽象工厂(Abstract Factory):提供一个创建产品族的接口,其每个子类可以生产一系列相关产品

      例如:

        现代人: 开 现代 car -用着热武器 AK47 吃着 面包

        魔法人: 骑着扫把 broom ,用着魔法棒 magicstick 吃着蘑菇 mushroom

        。。。。。。 

    定义Food、Vehicle、Weapon

    /**
     * 定义食物
     */
    public abstract class Food {
        abstract void printName();
    }
    /**
     * 定义工具
     */
    public abstract class Vehicle {
        abstract void printName();
    }
    /**
     * 定义武器
     */
    public abstract class Weapon {
        abstract void printName();
    }
    ------------------对应武器子类
    public class Ak47 extends Weapon {
        @Override
        void printName() {
            System.out.println("ak47...");
        }
    }
    public class MagicStick extends Weapon {
        @Override
        void printName() {
            System.out.println("magicstic...");
        }
    }
    ------------------对应食物子类
    public class Bread extends Food {
        @Override
        void printName() {
            System.out.println("bread...");
        }
    }
    public class Mushroom extends Food {
        @Override
        void printName() {
            System.out.println("mushroom...");
        }
    }
    ------------------对应工具子类
    public class Car extends Vehicle {
        @Override
        void printName() {
            System.out.println("car...");
        }
    }
    public class Broom extends Vehicle {
        @Override
        void printName() {
            System.out.println("broom...");
        }
    }
    

     定义抽象工厂

    /**
     * 定义一个抽象工厂
     */
    public abstract class AbastractFactory {
        abstract Food createFood();
        abstract Vehicle createVehicle();
        abstract Weapon createWeapon();
    }
    public class ModernFactory extends AbastractFactory {
        @Override
        Food createFood() {
            return new Bread();
        }
    
        @Override
        Vehicle createVehicle() {
            return new Car();
        }
    
        @Override
        Weapon createWeapon() {
            return new Ak47();
        }
    }
    public class MagicFactory extends AbastractFactory {
        @Override
        Food createFood() {
            return new Mushroom();
        }
    
        @Override
        Vehicle createVehicle() {
            return new Broom();
        }
    
        @Override
        Weapon createWeapon() {
            return new MagicStick();
        }
    }
    

      Main方法

    public class Main {
        public static void main(String[] args) {
            AbastractFactory factory = new ModernFactory();
            Food food = factory.createFood();
            Vehicle vehicle = factory.createVehicle();
            Weapon weapon = factory.createWeapon();
    
        }
    }
    

      由此可以实现 产品一族的实现

     

  • 相关阅读:
    ListView Item 点击展开隐藏问题
    01背包基础 (杭电2602)
    实现一个简单的语音聊天室(多人语音聊天系统)
    Tomcat全攻略
    Linux pipe函数
    从网页抓取数据的一般方法
    华为的面试经历
    微软2014校园招聘笔试试题
    C++ 虚函数表解析
    unity3d 改动gui label颜色,定义颜色需除以256
  • 原文地址:https://www.cnblogs.com/huan30/p/12737421.html
Copyright © 2011-2022 走看看