03 设计模式 抽象工厂
时间:2022-07-22
本文章向大家介绍03 设计模式 抽象工厂,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
抽象工厂
建立一个最高层级的工厂,用来生产不同产品的工厂,然后再建立一个产品规范,用来规定生产的产品需要有什么样的功能。
这样做的好处就是不需要关心创建的细节,并将一个系列的产品一起创建
产品的规范:
/*电脑产品*/
public interface ComputerProduct {
public void playGame();
public void coding();
public void watchMovie();
}
/*鼠标产品*/
public interface MouseProduct {
public void leftClick();
public void rightClick();
public void doubleClick();
public void move();
}
产品的工厂:
public interface ProductFactory {
public MouseProduct getMouse();
public ComputerProduct getComputer();
}
戴尔的产品:
/*戴尔的电脑*/
public class DellComputer implements ComputerProduct{
@Override
public void playGame() {
System.out.println("用戴尔电脑打游戏");
}
@Override
public void coding() {
System.out.println("用戴尔电脑写代码");
}
@Override
public void watchMovie() {
System.out.println("用戴尔电脑看电影");
}
}
/*戴尔的鼠标*/
public class DellMouse implements MouseProduct{
@Override
public void leftClick() {
System.out.println("左键单击戴尔鼠标");
}
@Override
public void rightClick() {
System.out.println("右键单击戴尔鼠标");
}
@Override
public void doubleClick() {
System.out.println("双击戴尔鼠标");
}
@Override
public void move() {
System.out.println("移动戴尔鼠标");
}
}
戴尔的产品工厂:
public class DellFactory implements ProductFactory {
@Override
public MouseProduct getMouse() {
return new DellMouse();
}
@Override
public ComputerProduct getComputer() {
return new DellComputer();
}
}
联想的产品:
/*联想的电脑*/
public class LenovoComputer implements ComputerProduct{
@Override
public void playGame() {
System.out.println("用联想电脑打游戏");
}
@Override
public void coding() {
System.out.println("用联想电脑写代码");
}
@Override
public void watchMovie() {
System.out.println("用联想电脑看电影");
}
}
/*联想的鼠标*/
public class LenovoMouse implements MouseProduct{
@Override
public void leftClick() {
System.out.println("左键单击联想鼠标");
}
@Override
public void rightClick() {
System.out.println("右键单击联想鼠标");
}
@Override
public void doubleClick() {
System.out.println("双击联想鼠标");
}
@Override
public void move() {
System.out.println("移动联想鼠标");
}
}
联想的产品工厂:
public class LenovoFactory implements ProductFactory {
@Override
public MouseProduct getMouse() {
return new LenovoMouse();
}
@Override
public ComputerProduct getComputer() {
return new LenovoComputer();
}
}
抽象工厂模式主要还是看代码理解
- 十一国庆节 之 “变量与函数同名时,会输出谁?”
- 挖坑无止境,来看看这个《this的指向》
- T-SQL Enhancement in SQL Server 2005[上篇]
- 初学js钻太深,不太好
- Linux shell 程序设计3——命令行程序
- Linux shell 程序设计2——bash的内置命令
- T-SQL Enhancement in SQL Server 2005[下篇]
- JS原型,a和b是不是失散多年的兄弟?
- Linux shell 程序设计1——安装及入门
- 偶遇--《坑新人--前端专用面试题》
- 简单的说下,(function(){...})() 与 (function(){...}()) 有什么区别?
- ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline[上篇]
- Shell常用命令小结
- 插入法排序
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法