首页 技术 正文
技术 2022年11月13日
0 收藏 907 点赞 3,899 浏览 1901 个字

* 抽象工厂:

  意图在于创建一系列互相关联或互相依赖的对象。
*每个工厂都会创建一个或多个一系列的产品
*适用于:产品不会变动,开始时所有产品都创建好,然后根据分类获取想要的 某一类产品(很像spring容器)

代码解释:

1.创建产品接口:手机和它的实现子类

//手机接口
public interface MobileProduct {}//实现子类Android
public class Android implements MobileProduct{ public Android() {
System.out.println("生产一个Android手机...");
}
}//实现子类Apple
public class Apple implements MobileProduct{ public Apple() {
System.out.println("生产一个Apple手机...");
}
}

2.创建产品接口2:汽车,和它的实现子类

//第二种产品:汽车
public interface CarProduct {}//实现子类1:宝马
public class BaoMa implements CarProduct{ public BaoMa() {
System.out.println("生产一个宝马汽车...");
}
}//实现子类2:奔驰
public class BenChi implements CarProduct{ public BenChi() {
System.out.println("生产一个奔驰汽车...");
}
}

3.创建抽象父类(或者抽象接口)和方法:可以生产手机和汽车,但是具体生产那种手机和汽车,不一定(由子类决定),因为里面的方法返回也是抽象的

//这里写接口也可以,抽象类个人理解:具体能看见的事物;接口:看不见的
public abstract class AbstractFactory { /**
* 生产一个产品
* @return
*/
public abstract MobileProduct processMobile();
/**
* 生产一个产品
* @return
*/
public abstract CarProduct processCar();
}

4.实现2个生产系列产品的工厂

/**
* 生产 产品系列:一个苹果,一个宝马
* @author mlxs
*
*/
public class FactoryMothedA extends AbstractFactory{ @Override
public MobileProduct processMobile() {
return new Apple();
} @Override
public CarProduct processCar() {
return new BaoMa();
}}
/**
* 生产方式B 产品系列:一个安卓,一个奔驰
* @author mlxs
*
*/
public class FactoryMothedB extends AbstractFactory{ @Override
public MobileProduct processMobile() {
return new Android();
} @Override
public CarProduct processCar() {
return new BenChi();
}
}

5.客户端测试

public static void main(String[] args) {
System.out.println("-----------------生产系列A:苹果和宝马-------------------");
//生产系列A:苹果和宝马
AbstractFactory factory = new FactoryMothedA();
factory.processMobile();
factory.processCar(); System.out.println("\n-----------------生产系列B:安卓和奔驰-------------------");
    //生产系列B:安卓和奔驰
    AbstractFactory factoryB = new FactoryMothedB();
    factory.processMobile(); factory.processCar(); }

6.结果:

-----------------生产系列A:苹果和宝马-------------------
生产一个Apple手机...
生产一个宝马汽车...-----------------生产系列B:安卓和奔驰-------------------
生产一个Apple手机...
生产一个宝马汽车...

缺陷:有新产品的时候,改动地方很多(产品类、系列工厂类、抽象工厂类都要改)

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,999
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,511
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,357
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,140
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848