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

网友投稿 201 2023-07-03


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

在面向对象编程的程序设计中,我们最常见的操作就是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(rqUkFcBIAx);

}

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多http://多支持我们。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
下一篇:轻松掌握Java建造者模式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~