工厂方法模式

本文详细介绍了工厂方法模式的四种核心角色:抽象工厂、具体工厂、抽象产品和具体产品,并通过示例代码展示了如何使用工厂方法模式创建不同类型的交通工具。

工厂方法模式有四种角色:

1:抽象工厂角色:担任这个角色的是工厂方法模式的核心,它是与应用程序无关的,任何在模式中创建的工厂类必须实现这个接口,这个角色一般有Java接口扮演,在实际的系统中,这个角色也常常使用抽象java类来实现。

2:具体工厂角色:担任着个角色的是实现了抽象工厂接口的具体Java类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用以创建产品对象。

3:抽象产品角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同富类型或共同拥有的接口。通常由java接口来实现,实际系统中有的时候用java抽象类来实现。

4:具体产品角色:这个角色实现了实现了抽象产品角色所声明的接口,工厂方法模式所创建的每一个对象都是某个具体产品角色的实例。

下面按照上面提到的角色来依次介绍:

抽象工厂角色:

/**
 * 
 */
package com.cn.gd.factory;

/**
 * @author sandy
 *
 */
//交通工具类充当抽象工厂角色
public abstract class VehicleFactory {
	public abstract Moveable   create();
}

 

具体工厂角色:

/**
 * 
 */
package com.cn.gd.factory;

/**
 * @author sandy
 * 生产火车的工厂实现了交通工具的抽象工厂
 * 在这里担当具体工厂角色
 */
public class TrainFactory extends VehicleFactory {

	/* (non-Javadoc)
	 * @see com.cn.gd.factory.VehicleFactory#create()
	 */
	@Override
	public Moveable create() {
		return  new Train();
	}
}

 

/**
 * 
 */
package com.cn.gd.factory;

/**
 * @author sandy
 * 生产汽车的工厂实现了交通工具的抽象工厂
 * 在这里担当具体工厂角色
 */
public class CarFactory extends VehicleFactory {

	/* (non-Javadoc)
	 * @see com.cn.gd.factory.VehicleFactory#create()
	 */
	@Override
	public Moveable create() {
		return new Car();
	}
}

  

/**
 * 
 */
package com.cn.gd.factory;

/**
 * @author sandy
 * 生产飞机的工厂实现了交通工具的抽象工厂
 * 在这里担当具体工厂角色
 */
public class PlaneFactory extends VehicleFactory {

	/* (non-Javadoc)
	 * @see com.cn.gd.factory.VehicleFactory#create()
	 */
	@Override
	public Moveable create() {
		return new Plane();
	}
}

 抽象产品角色:

/**
 * 
 */
package com.cn.gd.factory;

/**
 * @author sandy
 * 抽象产品角色
 */
public interface Moveable {
	//可以移动
	void move();
}

 具体产品角色: 

package com.cn.gd.factory;
/**
 * 
 * @author sandy
 *具体产品角色火车类
 */
public class Train implements Moveable {

	public void move() {
		System.out.println("the train is moving .................................");
	}
}

 

/**
 * 
 */
package com.cn.gd.factory;

/**
 * @author sandy
 * 具体产品角色汽车类
 */
public class Car implements Moveable {
	public void move() {
		System.out.println("the  car is moving .........................");
	}
}

 

package com.cn.gd.factory;
/**
 * 
 * @author sandy
 * 具体产品角色飞机类
 */
public class Plane implements Moveable {

	public void move() {
		System.out.println("the plane is moving .......................");
	}
}

 

客户端程序代码:

/**
 * 
 */
package com.cn.gd.factory;

/**
 * @author sandy
 *客户端程序来测试工厂方法模式
 */
public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		start();
	}

	private static void start() {
	//	VehicleFactory  factory=new CarFactory();
//		VehicleFactory  factory=new PlaneFactory();
		VehicleFactory  factory=new TrainFactory();
		Moveable  movetool=factory.create();
	    movetool.move();
	}

}

 

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值