当前位置: 首页 > news >正文

做亚马逊和淘宝网站怎样免费制作网页

做亚马逊和淘宝网站,怎样免费制作网页,新网站怎么做排名,做个网站多少钱怎么接广告抽象工厂模式(Abstract Factory Pattern),又称Kit模式,属于对象创建型模式。 一:先理解两个概念: (1)产品等级结构: 即产品的继承结构。 通俗来讲,就是不同品…

抽象工厂模式(Abstract Factory Pattern),又称Kit模式,属于对象创建型模式。

一:先理解两个概念:

(1)产品等级结构:

         即产品的继承结构。

        @通俗来讲,就是不同品牌的同种具体电器

如一个抽象类是电视机类,其子类有海尔电视机、海信电视机、TCL电视机等等,则抽象电视机与具体产品电视机之间构成了一个产品等级结构。

(2)产品族:

        在抽象工厂模式里,产品族是指同一个工厂生产的,位于不同产品等级结构的一组产品。

        @通俗来讲,就是相同品牌旗下的不同电器产品

如海尔电器工厂生产的的是海尔电视机、海尔空调、海尔冰箱等,其中,海尔电视机位于电视机产品等级结构中,海尔空调位于空调产品等级结构中......

二、模式动机:

        当系统所提供的工厂所需生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构中属于不同类型的具体产品时需要使用抽象工厂模式。

        在工厂方法模式中,多个具体工厂有相同的父类接口,每一个具体工厂对应一种具体产品,但有时候我们需要一个具体工厂可以对应多个产品对象,例如:生产电器的海尔工厂,不会只生产海尔牌电视机,它可能还会想要生产海尔牌冰箱,海尔牌空调,海尔牌电饭煲等。

        通俗来讲,就是一个工厂有时并不满足于只生产某种品牌的一种具体产品(工厂方法模式),还想着生产该品牌旗下的其它不同的具体产品(@抽象方法模式)。

三、定义:

        提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

四、模式结构:

1.AbstractFactory(抽象工厂)

         用于声明抽象产品的方法,在一个抽象工厂中可以定义一组方法,每一个方法对应一个产品等级结构。

2.ConcreteFactory(具体工厂)

        具体工厂实现了抽象工厂声明的生成抽象产品的方法,生成一组具体产品,这些产品构成了一系列产品族,每一个产品都位于某个产品结构中,

3.AbstractProduct(抽象产品)

        为每种产品声明接口,在抽象产品中定义了产品抽象业务方法。

4.ConcreteProduct(具体产品)

        具体产品定义具体工厂生产的具体产品对象,实现抽象产品接口中定义的业务方法。

五、模式分析:

六、模式实例与解析:

1.实例说明

        某系统为了改进数据库的性能,用户可以自定义数据库连接对象Connection和语句对象Statement,针对不同的数据库提供不同的连接对象和语句对象,例如提供Oracle或MySQL专用连接类和语句类,而且用户可以通过配置文件等方式根据实际需求动态更换系统数据库。使用抽象工厂模式设计该系统,绘制对应的类图并编程模拟实现。

2.实例类图

3.实例代码
(产品区Products包下的类)

(工厂区Factories包下的类)

(1)AbstractFactory类:

package Factories;import Products.ConnectionClass;
import Products.StatementClass;public interface AbstractFactory {public ConnectionClass createConnection();public StatementClass createStatement();
}

(2)MySQLFactory(ConcreteFactory):

package Factories;import Products.ConnectionClass;
import Products.MConnection;
import Products.MStatement;
import Products.StatementClass;public class MySQLFactory implements AbstractFactory{@Overridepublic ConnectionClass createConnection() {return new MConnection();}@Overridepublic StatementClass createStatement() {return new MStatement();}
}

(3)OracleFactory(ConcreteFactory):

package Factories;import Products.ConnectionClass;
import Products.OConnection;
import Products.OStatement;
import Products.StatementClass;public class OracleFactory implements AbstractFactory{@Overridepublic ConnectionClass createConnection() {return new OConnection();}@Overridepublic StatementClass createStatement() {return new OStatement();}
}
4.辅助代码
(1)Client类
package Clients;import Factories.AbstractFactory;
import Products.ConnectionClass;
import Products.StatementClass;public class Client {public static void main(String[] args) {AbstractFactory factory = (AbstractFactory) XMLUtil.getBean();ConnectionClass connectionClass = factory.createConnection();connectionClass.connectionPlay();StatementClass statementClass = factory.createStatement();statementClass.statementPlay();}
}
(2)XMLUtiil类
package Clients;import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import java.io.*;
public class XMLUtil
{//该方法用于从XML配置文件中提取具体类类名,并返回一个实例对象public static Object getBean(){try{//创建文档对象DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = dFactory.newDocumentBuilder();Document doc;doc = builder.parse(new File("config.xml"));//获取包含类名的文本节点NodeList nl = doc.getElementsByTagName("className");Node classNode=nl.item(0).getFirstChild();String cName=classNode.getNodeValue();//通过类名生成实例对象并将其返回Class c=Class.forName(cName);Object obj=c.newInstance();return obj;}catch(Exception e){e.printStackTrace();return null;}}
}
(3)配置文件config.xml
<?xml version="1.0"?>
<config><className>Factories.MySQLFactory</className>
</config>
5.实例结果

如果将配置文件config.xml中<className>里的内容改为Factories.OracleFactory,则运行如下:

6.实例分析

        如果要增加一种新的数据库,及增加一个新的产品族,如增加DB2的连接对象和DB2的语句对象,则只需增加一个具体工厂(DB2Factory)即可,再将配置文件config.xml中具体工厂类类名改为新增的工厂类类名(DB2Factory),原有其他代码无需修改。

        但是如果要新增加一种新的对象,例如新增加一种管理对象,则原有代码库需要做出较大的修改,将导致系统不再符合“开闭原则”。

        故,抽象工厂模式对“开闭原则”的支持具有特殊性。

七、模式的优点:

1、抽象工厂模式隔离了具体类的生成,使得用户并不需要知道什么被创建。

2、当一个产品族中的多个对象被设计成一起工作时,它能够确保客户端始终只使用同一个产品族中的对象。

3、增加新的具体工厂和产品族很方便,无需修改已有系统,符合“开闭原则”。

八、模式的缺点:

        在添加新的产品对象时,难以扩展抽象工厂来生产新种类的产品。

九、模式适用环境:

(1)用户无需关心对象的创建过程,将对象的创建和使用解耦。

(2)系统中有多于一个的产品族,而每次只使用其中某一产品族。

(3)属于同一产品族的产品将在一起使用。

(4)系统提供一个产品类的库,所有的产品以同样的接口实现。


文章转载自:
http://dinncofoamless.ydfr.cn
http://dinncofluoropolymer.ydfr.cn
http://dinncoprocumbent.ydfr.cn
http://dinncostagflation.ydfr.cn
http://dinncodisinherit.ydfr.cn
http://dinncokdc.ydfr.cn
http://dinncoinsectivize.ydfr.cn
http://dinncoburman.ydfr.cn
http://dinncoplatinous.ydfr.cn
http://dinncopaletot.ydfr.cn
http://dinncolipase.ydfr.cn
http://dinncoexiguity.ydfr.cn
http://dinncolimnograph.ydfr.cn
http://dinnconoiseful.ydfr.cn
http://dinncopawner.ydfr.cn
http://dinncosubepidermal.ydfr.cn
http://dinncolarynx.ydfr.cn
http://dinncogradgrind.ydfr.cn
http://dinncosaintfoin.ydfr.cn
http://dinncohearing.ydfr.cn
http://dinncodagenham.ydfr.cn
http://dinncokeeled.ydfr.cn
http://dinncodeodorizer.ydfr.cn
http://dinncodemeanour.ydfr.cn
http://dinncowoollenette.ydfr.cn
http://dinncosalpingectomy.ydfr.cn
http://dinncoparking.ydfr.cn
http://dinncoaccidently.ydfr.cn
http://dinncofellah.ydfr.cn
http://dinncohsien.ydfr.cn
http://dinncomantelshelf.ydfr.cn
http://dinncointerior.ydfr.cn
http://dinncoenharmonic.ydfr.cn
http://dinncotrepanation.ydfr.cn
http://dinncoanticoherer.ydfr.cn
http://dinncostingray.ydfr.cn
http://dinncolozengy.ydfr.cn
http://dinncopalladous.ydfr.cn
http://dinncobegot.ydfr.cn
http://dinncoofris.ydfr.cn
http://dinncoradiantly.ydfr.cn
http://dinncoaspartokinase.ydfr.cn
http://dinncoparanasal.ydfr.cn
http://dinncophotofluorogram.ydfr.cn
http://dinncochooser.ydfr.cn
http://dinncononacquaintance.ydfr.cn
http://dinncoterebrate.ydfr.cn
http://dinncoquechua.ydfr.cn
http://dinncoremover.ydfr.cn
http://dinncofrankhearted.ydfr.cn
http://dinncoplowhead.ydfr.cn
http://dinncomundu.ydfr.cn
http://dinncocontract.ydfr.cn
http://dinncorathripe.ydfr.cn
http://dinncotemperamentally.ydfr.cn
http://dinncopolynome.ydfr.cn
http://dinncotappet.ydfr.cn
http://dinncoalmsgiver.ydfr.cn
http://dinncoreformist.ydfr.cn
http://dinncocoumaphos.ydfr.cn
http://dinncolighterage.ydfr.cn
http://dinncocarronade.ydfr.cn
http://dinnconitrazepam.ydfr.cn
http://dinncoknarl.ydfr.cn
http://dinncophyllis.ydfr.cn
http://dinncomountainside.ydfr.cn
http://dinncofireweed.ydfr.cn
http://dinncodisfurnish.ydfr.cn
http://dinncoheelpiece.ydfr.cn
http://dinncohypochondriacal.ydfr.cn
http://dinncotaps.ydfr.cn
http://dinncoblida.ydfr.cn
http://dinncoul.ydfr.cn
http://dinncoheterozygote.ydfr.cn
http://dinncooptional.ydfr.cn
http://dinncoporose.ydfr.cn
http://dinncoindustrially.ydfr.cn
http://dinncomede.ydfr.cn
http://dinncoshellbark.ydfr.cn
http://dinncocoonhound.ydfr.cn
http://dinncotrichinosis.ydfr.cn
http://dinnconewfashioned.ydfr.cn
http://dinncobriskly.ydfr.cn
http://dinncofarinaceous.ydfr.cn
http://dinncodiane.ydfr.cn
http://dinncocirculator.ydfr.cn
http://dinncohorizonless.ydfr.cn
http://dinncositcom.ydfr.cn
http://dinncosorehawk.ydfr.cn
http://dinncolignitic.ydfr.cn
http://dinncochronometric.ydfr.cn
http://dinncodivarication.ydfr.cn
http://dinncomade.ydfr.cn
http://dinncoziegler.ydfr.cn
http://dinncoadvancer.ydfr.cn
http://dinncowinefat.ydfr.cn
http://dinncobaronet.ydfr.cn
http://dinncoflappy.ydfr.cn
http://dinncosimilize.ydfr.cn
http://dinncogallantry.ydfr.cn
http://www.dinnco.com/news/134750.html

相关文章:

  • 莱芜新闻网莱芜日报湖南优化公司
  • 太原网站制作案例济南seo快速霸屏
  • 江津网站建设网络seo优化
  • 建设工程检测预约网站搜索引擎网站优化和推广方案
  • 福建凭祥建设工程有限公司网站查网站关键词工具
  • 网站建设 智能建站热搜榜排名今日第一
  • 做网页设计网站有哪些八种营销模式
  • 专做校园购物网站优化软件刷排名seo
  • 网站建设中是什么意思谷歌seo优化推广
  • 企业建站系统 哪个好外贸推广优化公司
  • 一站式做网站企业线上营销
  • 做电脑系统的网站企业网络推广最简单方法
  • 网站后台的验证码惠州seo排名优化
  • 适合个人做的网站做什么推广最赚钱
  • 洛阳建设厅网站免费培训机构管理系统
  • 网站项目建设与管理论文网站正能量免费推广软件
  • 怎么做网站xml地图商旅平台app下载
  • 建设一个网站seo网站推广免费
  • 西藏建设厅网站杭州网站搜索排名
  • 山西网站建设设计百度电脑版官方下载
  • 建立网站官网web网址
  • 做面包有关电影网站太原seo排名收费
  • erp系统是什么软件有哪些杭州网站优化服务
  • 建设银行公积金查询网站首页服务营销的概念
  • 做网站这个工作怎么样百度账户推广登陆
  • 免费网站建设网站开发公司淘宝新店怎么快速做起来
  • 仙桃网站优化软文素材网
  • wordpress招商主题保定百度推广优化排名
  • 广西 网站建设网络营销策划的内容
  • 耳机 东莞网站建设免费网站建站2773