zoukankan      html  css  js  c++  java
  • [Java] 设计模式之工厂系列 01 简单工厂

    设计模式之工厂系列  http://liaokang-java.iteye.com/blog/1197771
            理解 Spring 的 Bean 工厂
    Spring = IOC + AOP
     (1), JDK 中 factory 也是比比皆是。

     (2), 抽象工厂 -- 换皮肤的软件


    抽象产品角色

    Moveable

    package com.bjsxt.dp.factory;
    
    public interface Moveable {
    	void run();
    }
    

    具体产品角色 1

    Car             实际例子      初衷 :去一个地方让车跑起来。 (只给司机一辆车)   如果让单例 : 那么车的产生过程,不能给司机控制。

    package com.bjsxt.dp.factory;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Car implements Moveable {
    	
    	private static Car car = new Car();
    	//private static List<Car> cars = new ArrayList<Car>();
    	
    	public Car() {}
    	
    	public static Car getInstance() {
    		
    		return car;
    	}
    	
    	public void run() {
    		System.out.println("冒着烟奔跑中car.......");
    	}
    }

    具体产品角色 2

    Plane

    package com.bjsxt.dp.factory;
    
    public class Plane implements Moveable {
    
    	@Override
    	public void run() {
    		System.out.println("扇着翅膀前进中plane....");
    	}
    }
    

    抽象工厂

    VehicleFactory

    package com.bjsxt.dp.factory;
    
    public abstract class VehicleFactory {
    	abstract Moveable create();
    }

    具体工厂

    PlaneFactory

    package com.bjsxt.dp.factory;
    
    public class PlaneFactory extends VehicleFactory {
    	public Moveable create() {
    		return new Plane();
    	}
    }
    

    测试类

    Test

    package com.bjsxt.dp.factory;
    
    public class Test {
    	public static void main(String[] args) {
    		//Car c = Car.getInstance();
    		//Car c2 = Car.getInstance();
    		//VehicleFactory factory = new BroomFactory();
    		//Moveable m = factory.create();
    		//if(c == c2) System.out.println("same car");
    		//m.run();
    	}
    }
    
    1.         /** 
    2.          * 工厂模式的优点在于只要你新增一个产品,只需添加相应产品的工厂,当你需要更换产品时 
    3.          * 只需将对应的工厂改变,其它地方不需再改变,当然如果你新增的产品很多,这样容易造成工厂的泛滥 
    4.          * 这也是工厂模式的弊端 
    5.          */  




  • 相关阅读:
    IIS6.0中,使用其它用户运行IIS
    c++构造函数详解
    Java创建文件夹及文件
    三大范式及存储方式
    对新型软件程序语言及架构的一点讨论
    C++虚函数解析
    验收测试驱动开发:ATDD实例详解
    什么是父路径及开启的方法
    note:全局配置visual studio 2010 头文件目录
    怎么把二级域名重定向到主域名
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786550.html
Copyright © 2011-2022 走看看