首页 > 其他分享 >简单工厂模式

简单工厂模式

时间:2023-02-19 12:04:31浏览次数:29  
标签:Administrator mhm author Car 模式 工厂 简单 simplefactory public


 

package com.mhm.simplefactory;

/**
*
* @author Administrator
* @描述 抽象产品角色
*/
public interface Car {
public void drive();
}

package com.mhm.simplefactory;

/**
*
* @author Administrator
* @描述 奔驰车,具体产品角色
*/
public class Benz implements Car {

@Override
public void drive() {
System.out.println("开奔驰车");
}

}


package com.mhm.simplefactory;

/**
*
* @author Administrator
* @描述 宝马车,具体产品角色
*/
public class Bmw implements Car {

@Override
public void drive() {
System.out.println("开宝马车");
}

}


package com.mhm.simplefactory;

/**
*
* @author Administrator
* @描述 工厂类角色
*/
public class Driver {
public static Car driveCar (String carName) throws Exception {
if (carName.equalsIgnoreCase("benz")) {
return new Benz();
} else if (carName.equalsIgnoreCase("bmw")) {
return new Bmw();
} else {
throw new Exception("没有此车");
}
}
}


package com.mhm.simplefactory;

/**
* @描述 开车人
* @author Administrator
*
*/
public class Magnate {
public static void main(String[] args) {
try {
Car car = Driver.driveCar("bmw");
car.drive();
} catch (Exception e) {
e.printStackTrace();
}
}
}

 

当车多后,需要修改工厂类,这不符合开闭模式(对扩展开放,对修改封闭)

所以后续使用工厂方法模式。

 


标签:Administrator,mhm,author,Car,模式,工厂,简单,simplefactory,public
From: https://blog.51cto.com/u_21817/6066665

相关文章

  • 软件测试|测试开发之路--UI 自动化常用设计模式
    接上一次的帖子,今天讲一下我再UI自动化中常用的设计模式。由于网上已经有非常多的文章详细讲解了设计模式的编码实现,所以我今天也就不讲实现细节了。就是讲我也讲不出什......
  • Spring AOP annotation 简单实例
    最后输出(可以看出各种通知的时间): 我是前置通知。我是环绕--进。aa已成功保存我是后置通知。我是最终通知。我是环绕--出。 app.xml:<?xmlversion="1.0"encoding......
  • 一段简单的对TXT文件的操作代码
    1stringtxt=@"C:\DetectFolder\IPV4地址.txt";2stringpath="";34if(File.Exists(txt)){}//检测是否存在text文......
  • php 运用设计模式:观察者模式,设计电商平台支付成功程序|Github仓库
    前(fei)言(hua)在支付程序中,大型项目的维护,如果没有运用到设计模式,面向过程的编程,order程序会日益增加,程序看上去杂乱无章,今天写了一个小demo,之前没有运用过观察者模式的小伙......
  • 简单的猜拳游戏-JAVA实现
    一个简单的猜拳游戏packagecom.zhou.java.demo02;importjava.util.Random;importjava.util.Scanner;publicclassDemo09{publicstaticvoidmain(String[]args......
  • serializers序列化函数简单入门
    1.创建Django项目和应用程序首先,我们需要创建一个Django项目和一个Django应用程序。如果你已经有了Django项目和应用程序,请跳过这一步。$django-adminstartprojectm......
  • B - 滑雪【2022GDUT寒假集训-简单DP】
    B-滑雪原题链接思路\(定义f(i,j)为从坐标(i,j)出发的最大值\)\(状态转移方程f(i,j)=max(f(i+dx[k],j+dy[k]))\)\(答案为max(f(1,1),f(1,2),...,f(n,m))\)注意......
  • A - 摆花【2022GDUT寒假集训-简单DP】
    摆花原题链接思路\(\text{有}n\text{个数}\left(c_{1},c_{2},\ldots,c_{n}\right),0\leqslantc_{i}\leqslanta_{i}\text{,求有多少种方案数使}\s......
  • 访问者模式
    解耦数据结构和数据三种角色访问者IPeople:对数据结构的访问被访问者IMoney:被访问的数据结构容器BankContainer:用于装载数据结构,提供方法接受访问者访问所有的数据结......
  • 【JS】简单复习及ES6
    一、JavaScript基础及ES6视频链接:https://www.bilibili.com/video/BV1Y84y1L7Nn 10.变量的声明var与let首先说结论,放弃var,使用let。let为了解决var的一些......