当前位置:首页 > 科普资料 > 正文

安卓手机工厂模式

一 什么是工厂模式?工厂模式的特点是什么?

工厂模式是Java中最常用的设计模式之一,它属于创建型模式,是常用的实例化对象模式。在工厂模式中,在创建对象时不会暴露创建逻辑。

特点:

  • 将对象的创建与使用分离,提高代码的灵活性和可维护性。
  • 通过工厂方法创建对象,使得代码更加简洁,易于扩展和维护。
  • 可以根据需求动态地创建不同类型的对象,提高代码的可扩展性和复用性。

二 工厂模式的几种实现方法

1.简单工厂模式

public class AnimalFactory {//简单工厂设计模式(负担太重、不符合开闭原则)public static Animal createAnimal(String name) {if ("cat".equals(name)) {return new Cat();} else if ("dog".equals(name)) {return new Dog();} else if ("cow".equals(name)) {return new Cow();} else {return null;}}}

优点:把所有对象都放在一起,实现起来很简单,很容易学会。

缺点:扩展性差,添加一个新的对象,都要重新修改代码,违背了开闭原则(对拓展开发,对修改关闭)

2.工厂方法模式

简单介绍一下:创建一个工厂接口,让每一种动物创建自己的工厂类

public interface AnimalFactory {public Animal createAnimal();}
public class CatFactory implements AnimalFactory {@Overridepublic Animal createAnimal() {return new Cat();}}
public class CowFactory implements AnimalFactory {@Overridepublic Animal createAnimal() {return new Cow();}}
public class DogFactory implements AnimalFactory {@Overridepublic Animal createAnimal() {return new Dog();}}

优点:这种方式很好的减轻了工厂类的负担,增加新的对象,不需要修改工厂类,符合开闭原则。

缺点:增加了类的数量,当有几十种类型的产品时,就有几十对应的工厂类,不便于管理。

3.抽象工厂模式

比如说两家公司都生产手机和路由器,如果都按照上面的方法,将创建很多类,我们将把他们的业务类整合在一起,所以我们使用抽象工厂模式

先创建电话和路由器的接口

//这是手机 public interface IProducterPhone { //这里就不写具体代码了 }

//这是手机public interface IProducterPhone {//这里就不写具体代码了}

//这是路由器 public interface IProducterRouter { }

//这是路由器public interface IProducterRouter {}

接下来创建两家公司的产品

public class HuaweiPhone implements IProducterPhone{ }

public class HuaweiPhone implements IProducterPhone{}

public class HuaweiRouter implements IProducterRouter{ }

public class HuaweiRouter implements IProducterRouter{}

public class XiaomiPhone implements IProducterPhone{ }

public class XiaomiPhone implements IProducterPhone{}

public class XiaomiRouter implements IProducterRouter{ }

public interface AnimalFactory {public Animal createAnimal();}0

继续创建工厂接口

public interface AnimalFactory {public Animal createAnimal();}1

最后是两家公司的实现工厂类

public interface AnimalFactory {public Animal createAnimal();}2
public interface AnimalFactory {public Animal createAnimal();}3

从此可以看出这种方式,整合业务,使类少了,业务关系更清晰,缺点是扩展性不好。

三 哪些场景使用了工厂模式

下面只是简单的举例说明,不局限在以下几种场景:

  • 创建数据库连接
  • 创建线程
  • 创建加密算法

最后,要根据其特点和需求,合理使用此模式。毕竟合适的才是最好的。