• [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.          */  




  • 相关阅读:
    ftl总结
    关于button的自动刷新
    判断json格式中是否含有key
    main方法的参数
    开发笔记--java.lang.OutOfMemoryError: PermGen space异常处理
    C/C++混合编程
    MFC 模块状态的实现
    类的私有private构造函数 ,为什么要这样做
    MFC DLL 导出函数的定义方式
    关于 AfxGetStaticModuleState ()
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786550.html
Copyright © 2020-2023  润新知