java工厂模式

一、简单工厂模式

简单工厂模式包含3个部分:1.抽象产品角色2.具体产品角色3.具体工厂角色

举个列子来说明一下:

生产一批鼠标,而鼠标又包含很多品牌,比如MouseA、MouseB

public interface Mouse {
//
}


public class MouseA implements Mouse{

public MouseA(){
System.out.println("生产MouseA");
}

}


public class MouseB implements Mouse{
public MouseB(){
System.out.println("生产MouseB");
}
}


具体工厂角色:

public class MouseFactory {
public static Mouse createMouse(String brand){
if (brand.equals("a")) {
return new MouseA();
}else{
return new MouseB();
}
}
}


测试类:

public class TestComputer {
public static void main(String[] args) {
MouseFactory.createMouse("a");
}
}


控制台输出:

生产MouseA


这种模式,如果以后要添加MouseC、MouseD...需要修改MouseFactory 类的createMouse()方法


二、工厂方法模式

工厂方法模式包含4个部分:1.抽象产品角色2.具体产品角色3.抽象工厂角色4.具体工厂角色

举个列子,还是生产一批鼠标:

public interface Mouse {
//
}


public class MouseA implements Mouse{

public MouseA(){
System.out.println("生产MouseA");
}

}


public class MouseB implements Mouse{
public MouseB(){
System.out.println("生产MouseB");
}
}


抽象工厂角色:

public interface AbstractFactory {
public Mouse createMouse();
}


具体工厂角色:

public class MouseAFactory implements AbstractFactory{
public Mouse createMouse() {
return new MouseA();
}
}


测试代码:

public class TestComputer {
public static void main(String[] args) {
AbstractFactory factory = new MouseAFactory();
factory.createMouse();
}
}


控制台输出: 

生产MouseA


三、抽象工厂模式

抽象工厂模式也包含4个部分:1.抽象产品角色2.具体产品角色3.抽象工厂角色4.具体工厂角色

一个抽象工厂角色(Computer)有多个具体工厂角色(Computer1、Computer2等等),一个具体工厂角色(Computer1)可以创建多个具体产品对象(MouseA和MonitorA)。

举个列子来说明一下:

一台计算机工作需要的对象1.鼠标(方法:点击鼠标)2.显示屏(方法:显示画面)(计算机工作包括很多了,这里就只说鼠标和显示屏了)

而鼠标和显示屏又都有好多种品牌,比如A品牌的鼠标,B品牌的鼠标,A品牌的显示器,B品牌的显示器。

到现在,我们需要6个实体类了。分别是接口Mouse、实现类MouseA、实现类MouseB和接口Monitor、实现类MonitorA、实现类MonitorB

也就是抽象产品角色Mouse、Monitor。具体产品角色MouseA、MouseB、MonitorA、MonitorB。

代码很简单,如下:

public interface Mouse {
public void click();
}


public class MouseA implements Mouse{
public void click() {
System.out.println("点击A品牌的鼠标");
}
}


public class MouseB implements Mouse{
public void click() {
System.out.println("点击B品牌的鼠标");
}
}


public interface Monitor {
public void show();
}


public class MonitorA implements Monitor{
public void show() {
System.out.println("使用A品牌的显示屏来显示画面");
}
}


public class MonitorB implements Monitor{
public void show() {
System.out.println("使用B品牌的显示屏来显示画面");
}
}


一台计算机工作的话需要有鼠标和显示屏(这里直说鼠标和显示屏),需要获得鼠标和显示屏对象。而我们知道市场上的计算机的型号太多了,一台计算机可能配置的是

1.A鼠标A显示屏

2.B鼠标B显示屏

3.A鼠标B显示屏

4.B鼠标A显示屏

...等等,还有很多我们没有列出来的其他品牌的鼠标和显示屏。

我们需要有一个接口(抽象工厂角色)来创建鼠标和显示屏对象,然后通过这个接口的实现类(具体工厂角色)来创建具体的鼠标和显示屏。

代码如下:

public interface Computer {
public Mouse createMouse();
public Monitor createMonitor();
}



public class Computer1 implements Computer{ //computer1这台计算机配置的是MouseA和MonitorA
public Mouse createMouse() {
return new MouseA();
}
public Monitor createMonitor() {
return new MonitorA();
}
}


//计算机肯定不止computer1这一个型号了,还有很多,只要实现Computer接口,在方法的实现中返回具体的鼠标和显示屏就可以了。


测试一下代码:

public class TestComputer {
public static void main(String[] args) {
Computer c = new Computer1();
c.createMouse().click();
c.createMonitor().show();
}
}



控制台输出:

使用A品牌的显示屏来显示画面
点击A品牌的鼠标


以上是我自己这两天学习的理解,如有错误,欢迎大家指正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值