zoukankan      html  css  js  c++  java
  • [Java] 设计模式之工厂系列 02-面向抽象编程 抽象工厂

     (1), JDK 中 factory 也是比比皆是。 (2), 抽象工厂 -- 换皮肤的软件

    Vehicle

    package com.bjsxt.dp.factory.abstractfactory;
    
    public abstract class Vehicle {
    	public abstract void run();
    }
    
    Weapon
    package com.bjsxt.dp.factory.abstractfactory;
    
    public abstract class Weapon {
    	public abstract void shoot();
    }
    
    Food
    package com.bjsxt.dp.factory.abstractfactory;
    
    public abstract class Food {
    	public abstract void printName();
    }
    
    AbstractFactory
    package com.bjsxt.dp.factory.abstractfactory;
    
    public abstract class AbstractFactory {
    	public abstract Vehicle createVehicle();
    	public abstract Weapon createWeapon();
    	public abstract Food createFood();
    	
    }
    
    Carextends Vehicle
    package com.bjsxt.dp.factory.abstractfactory;
    
    
    public class Car extends Vehicle {
    	
    	public void run() {
    		System.out.println("冒着烟奔跑中car.......");
    	}
    }
    
     Broom  extends Vehicle
    package com.bjsxt.dp.factory.abstractfactory;
    
    public class Broom  extends Vehicle {
    
    	public void run() {
    		System.out.println("一路沙尘暴飞奔而来broom.....");
    	}
    
    }
    
    AK47 extends Weapon
    package com.bjsxt.dp.factory.abstractfactory;
    
    public class AK47 extends Weapon {
    	public void shoot() {
    		System.out.println("哒哒哒...");
    	}
    }
    
    MagicStick extends Weapon
    package com.bjsxt.dp.factory.abstractfactory;
    
    public class MagicStick extends Weapon {
    
    	@Override
    	public void shoot() {
    		System.out.println("fire hu hu hu ...");
    	}
    
    }
    
    Apple extends Food
    package com.bjsxt.dp.factory.abstractfactory;
    
    public class Apple extends Food {
    	public void printName() {
    		System.out.println("apple");
    	}
    }
    
    MushRoom extends Food
    package com.bjsxt.dp.factory.abstractfactory;
    
    public class MushRoom extends Food {
    
    	@Override
    	public void printName() {
    		// TODO Auto-generated method stub
    		System.out.println("mushroom");
    	}
    
    }
    
    DefaultFactory extends AbstractFactory
    package com.bjsxt.dp.factory.abstractfactory;
    
    public class DefaultFactory extends AbstractFactory {
    
    	@Override
    	public Food createFood() {
    		// TODO Auto-generated method stub
    		return new Apple();
    	}
    
    	@Override
    	public Vehicle createVehicle() {
    		// TODO Auto-generated method stub
    		return new Car();
    	}
    
    	@Override
    	public Weapon createWeapon() {
    		// TODO Auto-generated method stub
    		return new AK47();
    	}
    
    }
    
    MagicFactory extends AbstractFactory

    package com.bjsxt.dp.factory.abstractfactory;
    
    public class MagicFactory extends AbstractFactory {
    
    	@Override
    	public Food createFood() {
    		// TODO Auto-generated method stub
    		return new MushRoom();
    	}
    
    	@Override
    	public Vehicle createVehicle() {
    		// TODO Auto-generated method stub
    		return new Broom();
    	}
    
    	@Override
    	public Weapon createWeapon() {
    		// TODO Auto-generated method stub
    		return new MagicStick();
    	}
    	
    }
    

     抽象工厂针对是产品系列, 工厂方法则只是在子类中实例化对象,能控制生产过程。
  • 相关阅读:
    P2324 [SCOI2005]骑士精神
    P4160 [SCOI2009]生日快乐
    BZOJ 1103: [POI2007]大都市meg
    P4289 [HAOI2008]移动玩具
    P2472 [SCOI2007]蜥蜴
    adb: command not found 解決方法(转载)
    Thinkpad x230i安装Ubuntu10.04发生no network devices available
    Ubuntu10.04安装与配置nfs服务器(转载)
    RTSP协议简介(转载)
    UIBC 小註解(转载)
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786549.html
Copyright © 2011-2022 走看看