留坝县泥瓦工培训学校
留坝县泥瓦工培训学校招生详情:为您提供专业的留坝县学泥瓦工的学校,留坝县泥瓦工培训哪里好,留坝县泥瓦工培训学校,留坝县泥瓦工短期培训班,留坝县泥瓦工培训学校地址,留坝县学泥瓦工培训,留坝县泥瓦工培训哪里好,留坝县泥瓦工培训班,留坝县泥瓦工技术培训信息以及留坝县泥瓦工培训学校和留坝县泥瓦工培训班最新资讯,湖南阳光泥瓦工培训学校,常年面向留坝县地区开设泥瓦工培训班,是专业的留坝县泥瓦工学校,常年面向留坝县地区招生,热忱欢迎留坝县地区的泥瓦工技术求学者来我校学习最专业的泥瓦工技术。
聚焦菁蓉汇创业“明星”解码成都创新创业基因
现代简约办公室装修方案,让您耳目一新
上半年新增就业737万人 "稳就业"仍需做好"下半场"
空调制冷效果不好的原因及解决办法
掌握毛坯房验房标准,打好装修基础
,留坝县泥瓦工培训学校,留坝县泥瓦工培训班,留坝县泥瓦工学校
留坝县泥瓦工培训班文章内容:前面介绍的工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机、计算机软件学院只培养计算机软件专业的学生等。
同种类称为同等级,也就是说:工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品,空调外机不转维修要多少钱,如农场里既养动物又种植物,未来家电维修行业前景,空调加氟压力对照表,电器厂既生产电视机又生产洗衣机或空调,上海上菱职业培训学校,大学既有软件专业又有生物专业等。
本节要介绍的抽象工厂模式将考虑多等级产品的生产,充氟一公斤多少钱,上海浦东上陵培训学校,家电维修转行卖电器,将同一个具体工厂所生产的位于不同等级的一组产品称为一个产品族,浦东职业技能培训中心地址,货车加电瓶带空调,空调加氟,实战空调维修培训学校,图 1 所示的是海尔工厂和 TCL 工厂所生产的电视机与空调对应的关系图。
图1 电器工厂的产品等级与产品族
模式的定义与特点
抽象工厂(AbstractFactory)模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,变频空调维修培训学校,空调维修培训冰箱维修培训,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。
抽象工厂模式施仱厂方法模式的升级版本,空调吹风不制冷怎么调,变频空调加氧300块贵吗,半封闭压缩机加氟视频,工厂方法模式只生产一个等级的产品,美的m刻和舒适星谁好,而抽象工厂模式可生产多个等级的产品。
使用抽象工厂模式一般要满足以下条件。
系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。
系统一次只可能消费其中某一族产品,制冷设备维修工试题库,制冷设备维修实训报告,即同族的产品一起使用。
抽象工厂模式除了具有工厂方法模式的优点外,其他主要优点如下。
可以在类的内部对产品族中相关联的多等级产品共同管理,空调一会制冷一会不制冷,中央空调带水泵优缺点,空调加氟管子连接图示,一匹空调加一次氟多少钱,而不必专门引入多个新的类来进行管理。
当增加一个新的产品族时不需要修改原代码,满足开闭原则。
其缺点是:当产品族中需要增加一个新的产品时,所有的工厂类都需要进行修改。
模式的结构与实现
抽象工厂模式同工厂方法模式一样,做家电维修工的日子,上海制冷上岗证培训,空调冰箱维修速成班,空调维修自学教程大全,也是由抽象工厂、具体工厂、抽象产品和具体产品等 4 个要素构成,但抽象工厂中方法个数不同,美的pc200和ph200区别,办公室空调维修,抽象产品的个数也不同。现在我们来分析其基本结构和实现方法。
1. 模式的结构
抽象工厂模式的主要角色如下。
抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个创建产品的方法 newProduct(),鸿森加氟压力表说明书,可以创建多个不同等级的产品。
具体工厂(Concrete Factory):主要是实现抽象工厂中的多个抽象方法,长虹空调突然不制冷只吹风,货车空调正常加多少冷媒,完成具体产品的创建。
抽象产品(Product):定义了产品的规范,电器修理学校有哪些,两匹空调充氟价格,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品。
具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,上海空调制冷培训学校,上海制冷维修培训学校,由具体工厂来创建,鸿森压力表怎么看度数,它 同具体工厂之间是多对一的关系。
抽象工厂模式的结构图如图 2 所示。
图2 抽象工厂模式的结构图
2. 模式的实现
从图 2 可以看出抽象工厂模式的结构同工厂方法模式的结构相似,不同的是其产品的种类不止一个,修空调加氟怎么收费,所以创建产品的方法也不止一个。下面给出抽象工厂和具体工厂的代码。
(1) 抽象工厂:提供了产品的生成方法。
interface AbstractFactory
{
public Product1 newProduct1();
public Product2 newProduct2();
}
(2) 具体工厂:实现了产品的生成方法。
class ConcreteFactory1 implements AbstractFactory
{
public Product1 newProduct1()
{
System.out.println("具体工厂 1 生成-->具体产品 11...");
return new ConcreteProduct11();
}
public Product2 newProduct2()
{
System.out.println("具体工厂 1 生成-->具体产品 21...");
return new ConcreteProduct21();
}
}
模式的应用实例
【例1】用抽象工厂模式设计农场类。
分析:农场中除了像畜牧场一样可以养动物,鸿森压力表读数方法,还可以培养植物,制冷维修怎样,如养马、养牛、种菜、种水果等,所以本实例比前面介绍的畜牧场类复杂,东莞制冷维修培训学校,必须用抽象工厂模式来实现。
本例用抽象工厂模式来设计两个农场,R32氟利昂充氟多少钱,昆明制冷维修培训学校,一个是韶关农场用于养牛和种菜,空调冰箱维修哪里有培训班,一个是上饶农场用于养马和种水果,可以在以上两个农场中定义一个生成动物的方法 newAnimal() 和一个培养植物的方法 newPlant()。
对马类、牛类、蔬菜类和水果类等具体产品类,制冷机组的选型,家电维修挣钱的诀窍,由于要显示它们的图像(点此下载图片),制冷维修资格证,所以它们的构造函数中用到了 JPanel、JLabel 和 ImageIcon 等组件,家电维修还可以做吗,大货车加氟要几瓶,并定义一个 show() 方法来显示它们。
客户端程序通过对象生成器类 ReadXML 读取 XML 配置文件中的数据来决定养什么动物和培养什么植物(点此下载 XML 文件)。其结构图如图 3 所示。
图3 农场类的结构图
程序代码如下:
package AbstractFactory;
import java.awt.*;
import javax.swing.*;
public class FarmTest
{
public static void main(String[] args)
{
try
{
Farm f;
Animal a;
Plant p;
f=(Farm) ReadXML.getObject();
a=f.newAnimal();
p=f.newPlant();
a.show();
p.show();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}
//抽象产品:动物类
interface Animal
{
public void show();
}
//具体产品:马类
class Horse implements Animal
{
JScrollPane sp;
JFrame jf=new JFrame("抽象工厂模式测试");
public Horse()
{
Container contentPane=jf.getContentPane();
JPanel p1=new JPanel();
p1.setLayout(new GridLayout(1,1));
p1.setBorder(BorderFactory.createTitledBorder("动物:马"));
sp=new JScrollPane(p1);
contentPane.add(sp, BorderLayout.CENTER);
JLabel l1=new JLabel(new ImageIcon("src/A_Horse.jpg"));
p1.add(l1);
jf.pack();
jf.setVisible(false);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用户点击窗口关闭
}
public void show()
{
jf.setVisible(true);
}
}
//具体产品:牛类
class Cattle implements Animal
{
JScrollPane sp;
JFrame jf=new JFrame("抽象工厂模式测试");
public Cattle() {
Container contentPane=jf.getContentPane();
JPanel p1=new JPanel();
p1.setLayout(new GridLayout(1,1));
p1.setBorder(BorderFactory.createTitledBorder("动物:牛"));
sp=new JScrollPane(p1);
contentPane.add(sp, BorderLayout.CENTER);
JLabel l1=new JLabel(new ImageIcon("src/A_Cattle.jpg"));
p1.add(l1);
jf.pack();
jf.setVisible(false);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用户点击窗口关闭
}
public void show()
{
jf.setVisible(true);
}
}
//抽象产品:植物类
interface Plant
{
public void show();
}
//具体产品:水果类
class Fruitage implements Plant
{
JScrollPane sp;
JFrame jf=new JFrame("抽象工厂模式测试");
public Fruitage()
{
Container contentPane=jf.getContentPane();
JPanel p1=new JPanel();
p1.setLayout(new GridLayout(1,1));
p1.setBorder(BorderFactory.createTitledBorder("植物:水果"));
sp=new JScrollPane(p1);
contentPane.add(sp, BorderLayout.CENTER);
JLabel l1=new JLabel(new ImageIcon("src/P_Fruitage.jpg"));
p1.add(l1);
jf.pack();
jf.setVisible(false);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用户点击窗口关闭
}
public void show()
{
jf.setVisible(true);
}
}
//具体产品:蔬菜类
class Vegetables implements Plant
{
JScrollPane sp;
JFrame jf=new JFrame("抽象工厂模式测试");
public Vegetables()
{
Container contentPane=jf.getContentPane();
JPanel p1=new JPanel();
p1.setLayout(new GridLayout(1,1));
p1.setBorder(BorderFactory.createTitledBorder("植物:蔬菜"));
sp=new JScrollPane(p1);
contentPane.add(sp, BorderLayout.CENTER);
JLabel l1=new JLabel(new ImageIcon("src/P_Vegetables.jpg"));
p1.add(l1);
jf.pack();
jf.setVisible(false);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用户点击窗口关闭
}
public void show()
{
jf.setVisible(true);
}
}
//抽象工厂:农场类
interface Farm
{
public Animal newAnimal();
public Plant newPlant();
}
//具体工厂:韶关农场类
class SGfarm implements Farm
{
public Animal newAnimal()
{
System.out.println("新牛出生!");
return new Cattle();
}
public Plant newPlant()
{
System.out.println("蔬菜长成!");
return new Vegetables();
}
}
//具体工厂:上饶农场类
class SRfarm implements Farm
{
public Animal newAnimal()
{
System.out.println("新马出生!");
return new Horse();
}
public Plant newPlant()
{
System.out.println("水果长成!");
return new Fruitage();
}
}
package AbstractFactory;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;
class ReadXML
{
public static Object getObject()
{
try
{
DocumentBuilderFactory dFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=dFactory.newDocumentBuilder();
Document doc;
doc=builder.parse(new File("src/AbstractFactory/config.xml"));
NodeList nl=doc.getElementsByTagName("className");
Node classNode=nl.item(0).getFirstChild();
String cName="AbstractFactory."+classNode.getNodeValue();
System.out.println("新类名:"+cName);
Class<?> c=Class.forName(cName);
Object obj=c.newInstance();
return obj;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
}
程序运行结果如图 4 所示。
。留坝县泥瓦工培训学校,留坝县泥瓦工培训班,留坝县泥瓦工学校,留坝县学泥瓦工的学校,留坝县泥瓦工培训哪里好,留坝县泥瓦工培训学校,留坝县泥瓦工短期培训班,留坝县泥瓦工培训学校地址,留坝县学泥瓦工培训,留坝县泥瓦工培训哪里好,留坝县泥瓦工培训班,留坝县泥瓦工技术培训.(编辑:hnygdzxx888)
留坝县泥瓦工学校延伸阅读:
寻找三秦最美农民工|曹伟杰:将工匠精神做到极致
2018年电动工具行业现状分析 出口主导需求
根治欠薪冬季攻坚行动开展 让农民工告别“忧酬烦薪”
泸州首批异地农民工党委挂牌 农民工在全国14地有了“家”
教你如何办理房产赠与手续
2018年重庆福彩提供就业岗位近10000个
上海:2016年外来农民工月均收入5328元
2018年农民工监测调查报告:农民工总量增速回落月均收入增长(6)
六点室内家庭装修基本知识
三款经典房屋改造方案
二氧化碳制冷循环的应用-肇庆空调维修培训学校
家庭装修的流程详解
从地暖安装示意图中看地暖的优缺点
创业带头人:司鹏俊
平凉中院为农民工成功讨薪
河池空调维修培训学校,老房子装修前流程 老房子装修技巧
衣柜拉手选购 要注意这五点
惩治恶意欠薪 温江检方助力农民工讨回欠薪80余万元
木地板篮球场施工中的重点工作
31省份发力为农民工讨“血汗钱” 欠薪清零倒计时
。留坝县泥瓦工培训学校,留坝县泥瓦工培训班,留坝县泥瓦工学校,留坝县学泥瓦工的学校,留坝县泥瓦工培训哪里好,留坝县泥瓦工培训学校,留坝县泥瓦工短期培训班,留坝县泥瓦工培训学校地址,留坝县学泥瓦工培训,留坝县泥瓦工培训哪里好,留坝县泥瓦工培训班,留坝县泥瓦工技术培训.
(整理:留坝县泥瓦工培训学校)