当前位置: 移动技术网 > IT编程>开发语言>Java > 轻松掌握Java工厂模式、抽象工厂模式

轻松掌握Java工厂模式、抽象工厂模式

2019年07月22日  | 移动技术网IT编程  | 我要评论

郑孝美,都市皇宫,富二代杀妻案曝内幕

在面向对象编程的程序设计中,我们最常见的操作就是new对象,但在创建一个新对象的过程中,会有一些问题,比如我们需要注意创建新对象的实现细节,初始化一些必要的参数等。这样会让我们在讲更多的心思放在对象的创建上,而不是程序逻辑的实现上,严重拖延了我们的程序开发效率。工厂模式和抽象工厂模式的出现则完美解决了这个问题,让我们不再关心对象的创建,更多的在重心放在业务的实现上。

特点:

    1、程序员直接通过工厂方法创建对象,不再关注创建对象的细节。

    2、隐藏对象的实现细节,也有利于程序的安全性。

    3、降低程序耦合度。

企业级开发和常见框架中的应用:

    hibernate中的sessionfactory等

工厂模式分类:

简单工厂模式,程序开发中最常用的形式,具体代码如下:

public class demo {

 /**
 * demo这个类就是我们平时的操作类,在这个类中我们不用去关心 创建汽车的实现细节
 */
 public static void main(string[] args) {
 car car = carfactory.createcar("dz");
 car.run();
 car car2 = carfactory.createcar("at");
 car2.run();
 }
}
interface car{
 public void run();
}

class dz implements car{
 public void run() {
 system.out.println("大众汽车在跑"); 
 }
}

class at implements car{
 public void run() {
 system.out.println("奥拓汽车在跑");
 }
}

class carfactory{
 public static car createcar(string type){
 if("dz".equals(type)){
  system.out.println("创建了一个大众车");
  return new dz();
 }
 if("at".equals(type)){
  system.out.println("创建了一个奥拓车");
  return new at();
 }
 return null;
 }
}

工厂方法模式,相比于简单工厂模式,方便扩展,不必去修改以前的代码

public class demo {

 /**
 * demo这个类就是我们平时的操作类,在这个类中我们不用去关心 创建汽车的实现细节
 */
 public static void main(string[] args) {
 atfactory atfactory = new atfactory();
 dzfactory dzfactory = new dzfactory();
 car at = atfactory.createcar();
 car dz = dzfactory.createcar();
 at.run();
 dz.run();
 }
}

interface car {
 public void run();
}

class dz implements car {
 public void run() {
 system.out.println("大众汽车在跑");
 }
}

class at implements car {
 public void run() {
 system.out.println("奥拓汽车在跑");
 }
}

interface carfactory {
 car createcar();
}

class dzfactory implements carfactory {
 public car createcar() {
 return new dz();
 }
}

class atfactory implements carfactory {
 public car createcar() {
 return new at();
 }
}

抽象工厂方法模式:

public class demo {

 public static void main(string[] args) {
 car carfactory = new gdcarfactory();
 fdz fdz = carfactory.createfdz();
 fdz.zhuansu();
 }
}

interface fdz {
 void zhuansu();
}

class gdfdz implements fdz {
 public void zhuansu() {
 system.out.println("高端发动机转速快");
 }
}

class ddfdz implements fdz {

 public void zhuansu() {
 system.out.println("低端发动机转速慢");
 }

}

interface zy {
 void shushidu();
}

class gdzy implements zy {

 public void shushidu() {
 system.out.println("高端座椅很舒适");
 }

}

class ddzy implements zy {

 public void shushidu() {
 system.out.println("低端座椅不舒适");
 }

}

interface lt {
 void mosundu();
}

class gdlt implements lt {

 public void mosundu() {
 system.out.println("高端轮胎不磨损");
 }

}

class ddlt implements lt {

 public void mosundu() {
 system.out.println("低端轮胎磨损快");
 }

}

interface car {
 fdz createfdz();

 zy createzy();

 lt createlt();
}

class gdcarfactory implements car{

 @override
 public fdz createfdz() {
 return new gdfdz();
 }

 @override
 public zy createzy() {
 return new gdzy();
 }

 @override
 public lt createlt() {
 return new gdlt();
 }
 
}

class ddcarfactory implements car{

 @override
 public fdz createfdz() {
 return new ddfdz();
 }

 @override
 public zy createzy() {
 return new ddzy();
 }

 @override
 public lt createlt() {
 return new ddlt();
 }
 
}


三种方法的比较:

1、简单工厂模式:简单工厂模式设计简单,代码量少,但是可扩展性却很差,需要扩展时需要修改以前的代码

2、工厂方法模式:扩展性强,但增加了代码复杂度

3、抽象工厂模式:抽象工厂模式和工厂模式是不同,抽象工厂模式是对产品分等级,但工厂模式是对产品分类,举个汽车的例子:工厂模式是生产不同品种的汽车,比如奥迪和大众,而抽象工厂模式则是对同一款汽车进行等级划分,比如同样都是大众汽车,我们分了高端车和低端车。从方法上讲抽象工厂模式更像是工厂模式的细化。一个针对的不不同产品,一个针对的是同一个产品家族。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网