编写一个简单的工厂模式java,java工厂设计模式详解
00-1010工厂模式是Java中最常用的设计模式之一。这种类型的设计模式属于创造性模式,它提供了创建对象的最佳方式。在工厂模式中,我们在创建对象时不向客户端公开创建逻辑,我们通过使用公共接口指向新创建的对象。
00-1010意图:定义了创建对象的接口或抽象类,并让其子类决定实例化哪个工厂类。工厂模式延迟其创建过程,直到子类。
主要解决:主要解决接口选择的问题。
何时使用:明确计划在不同的条件下创建不同的实例。
让如何解决:的子类实现工厂接口并返回一个抽象产品。
关键代码:的创建过程是在其子类中执行的。
优点:1。一个调用者想要创建一个对象,只需要知道它的名字。2.高可扩展性。如果要添加产品,只需扩展一个工厂类。3.屏蔽产品的具体实现。来电者只关心产品的界面。
缺点:每增加一个产品,都需要增加一个特定的类和对象实现工厂,使得系统中的类数量翻倍,一定程度上增加了系统的复杂度,也增加了系统对特定类的依赖性。这不是一件好事。
使用场景:1。记录器:记录可能被记录到本地硬盘,系统事件,远程服务器等。用户可以选择记录日志的位置。2.数据库访问,当用户不知道系统最终会采用什么样的数据库,数据库可能会发生变化。3.设计一个连接服务器的框架需要三个协议,分别是‘pop 3’、‘IMAP’和‘HTTP’,它们可以作为产品类,共同实现一个接口。
注意:作为一种类创建模式,您可以在任何需要生成复杂对象的地方使用工厂方法模式。需要注意的一点是,复杂的对象适合使用工厂模式,而简单的对象,尤其是只能通过new创建的对象,不需要使用工厂模式。如果使用工厂模式,就需要引入工厂类,这样会增加系统的复杂度。
场景:开发一个类似计算器的JAVA程序。
1.抽象类或接口:Operator.java
抽象类运算符{ private double number1私人双数2;//用于实现四个算术类的公共抽象double get result();public double get number 1(){ return number 1;} public void set number 1(double number 1){ this . number 1=number 1;} public double get number 2(){ return number 2;} public void set number 2(double number 2){ this . number 2=number 2;} }2.实现类(各种操作的处理类)
/* * *加法* */公共类运算符add extends运算符{ @ override public double get result(){ return get number 1()get number 2();}}/* * *减法* */公共类运算符子扩展运算符{ @ override public double get result(){ return get number 1()-get number 2();}}/* * *乘法* */公共类运算符mulextends运算符{ @ override public double get result(){ return get number 1()* get number 2();}}/* * *除法运算* */公共类运算符div extends运算符{ @ override public double get result(){ if(get number 2()==0){ try { throw new exception(除数不能为0 );} catch(Exception e){ e . printstacktrace();} }返回get number 1()/get number 2();}}3.创建实例的工厂类:OperatorFactory.java。
public class Operator factory { public Operator create Operator(String op){ Operator Operator=null;switch(op){ case : operator=new operator add();打破;case - : operator=new operator sub();打破;case * : operator=new operator mul();打破;case / : operator=new operator div();打破;}返回运算符;}}4.测试(Junit)
导入org。朱尼特。测试;公共类Test main { @ Test public void Test(){ operator factory factory=new operator factory();操作员操作员=工厂。创建运算符(“*”);接线员。设置数量1(10.2);接线员。设置数量2(5.2);双结果=运算符。获取结果().System.out.println(结果);}}当我们有新的运算规则需要添加时,添加新的计算逻辑类以及在工厂类(运营商工厂)中新增规则就可以。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行它.
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。