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

个人网站开发专门做门的网站

个人网站开发,专门做门的网站,邮箱登录入口官网,做饮食网站怎么样1.抽象工厂模式定义: 抽象工厂模式提供了一个创建一系列相关或者相互依赖对象的接口,无需指定它们具体的类 2.抽象工厂模式适用场景: 客户端(应用层)不依赖于产品类实例如何被创建、实现等细节强调一系列相关的产品对象(属于同一产品族)一起使用创建对象需要大量…

1.抽象工厂模式定义:

抽象工厂模式提供了一个创建一系列相关或者相互依赖对象的接口,无需指定它们具体的类

2.抽象工厂模式适用场景:

  • 客户端(应用层)不依赖于产品类实例如何被创建、实现等细节
  • 强调一系列相关的产品对象(属于同一产品族)一起使用创建对象需要大量的重复代码
  • 提供一个产品类的库,所有的产品以同样的接口出现,从而使得客户端不依赖于具体的实现

3.抽象工厂模式的优缺点:


优点:

  • 具体产品在应用层的代码隔离,无需关心创建的细节
  • 将一个系列的产品统一到一起创建


缺点:

  • 规定了所有可能被创建的产品集合,产品簇中扩展新的产品困难
  • 增加了系统的抽象性和理解难度

创建一个手机接口 cn.xs.abstraction.IPhoneProduct
代码如下:
public interface IPhoneProduct {
/**
* 开机
*/
void open();
/**
* 关机
*/
void close();
/**
* 发短信
*/
void send();
/**
* 打电话
*/
void call();
}
创建一个路由器接口 cn.xs.abstraction.IRouterProduct
代码如下:
public interface IRouterProduct {
/**
* 开机
*/
void open();
/**
* 关机
*/
void close();
/**
* 设置参数
*/
void setting();
/**
* 打开 wifi
*/
void wifi();
}
新建小米手机产品类 cn.xs.abstraction.XiaomiPhone
代码如下:
public class XiaomiPhone implements IPhoneProduct {
public void open() {
System.out.println("小米手机开机");
}
public void close() {
System.out.println("小米手机关机");
}
public void send() {
System.out.println("小米手机发短信");
}
public void call() {
System.out.println("小米手机打电话");
}
}
新建小米路由器产品类 cn.xs.abstraction.XiaomiRouter
 
代码如下:
public class XiaomiRouter implements IRouterProduct {
public void open() {
System.out.println("小米路由器开机");
}
public void close() {
System.out.println("小米路由器关机");
}
public void setting() {
System.out.println("小米路由器设置参数");
}
public void wifi() {
System.out.println("小米路由器打开wifi");
}
}
新建华为手机产品类 cn.xs.abstraction.HuaweiPhone
代码如下:
public class HuaweiPhone implements IPhoneProduct {
public void open() {
System.out.println("华为手机开机");
}
public void close() {
System.out.println("华为手机关机");
}
public void send() {
System.out.println("华为手机发短信");
}
public void call() {
System.out.println("华为手机打电话");
}
}
新建华为路由器产品类 cn.xs.abstraction.HuaweiRouter  
代码如下:
public class HuaweiRouter implements IRouterProduct {
public void open() {
System.out.println("华为路由器开机");
}
public void close() {
System.out.println("华为路由器关机");
}
public void setting() {
System.out.println("华为路由器设置参数");
}
public void wifi() {
System.out.println("华为路由器打开wifi");
}
}
新建抽象工厂 cn.xs.abstraction.IProductFactory 来生产手机跟路由器(抽象):
public interface IProductFactory {
/**
* 生产手机
*
* @return
*/
IPhoneProduct getPhone();
/**
* 生产路由器
*
* @return
*/
IRouterProduct getRouter();
}
新建小米工厂 cn.xs.abstraction.XiaomiFactory 来生产手机跟路由器:
public class XiaomiFactory implements IProductFactory {
public IPhoneProduct getPhone() {
return new XiaomiPhone();
}
public IRouterProduct getRouter() {
return new XiaomiRouter();
}
}
新建华为工厂 cn.xs.abstraction.HuaweiFactory 来生产手机跟路由器:

 

public class HuaweiFactory implements IProductFactory {
public IPhoneProduct getPhone() {
return new HuaweiPhone();
}
public IRouterProduct getRouter() {
return new HuaweiRouter();
}
}

 根据类图关系深入了解:

 

新建测试类 cn.xs.abstraction.Client 来进行测试:

public class Client {
/**
* 测试方法
*
* @param args
*/
public static void main(String[] args) {
System.out.println("==========小米系列产品==========");
// 创建小米工厂
IProductFactory factory1 = new XiaomiFactory();
IPhoneProduct phone1 = factory1.getPhone();
phone1.send();
phone1.call();
IRouterProduct router1 = factory1.getRouter();
router1.setting();
router1.wifi();
System.out.println("==========华为系列产品==========");
// 创建华为工厂
IProductFactory factory2 = new HuaweiFactory();
IPhoneProduct phone2 = factory2.getPhone();
phone2.send();
phone2.call();
IRouterProduct router2 = factory2.getRouter();
router2.setting();
router2.wifi();
}
}

再看一下整体的一个类图

运行 main  

抽象工厂模式在产品稳定的情况下是极其强大的,但是如果要添加产品,其子类都需要修改代码,违反了开闭原则
小结:
简单工厂模式(静态工厂模式):

虽然某种程度上不符合设计原则,但实际使用最多!
工厂方法模式:

不修改已有类的前提下,通过增加新的工厂类实现扩展
抽象工厂模式:

不可以增加产品,可以增加产品族!

应用场景:

JDK中Calendar的getInstance方法
JDBC中的Connection对象的获取
Spring中IOC容器创建管理bean对象反射中Class对象的newInstance方法

 

http://www.yayakq.cn/news/588270/

相关文章:

  • 做效果图有哪些网站互联网金融
  • 站长工具官网wordpress 4.5.9
  • 生态养殖网站模板wordpress如何修改视频上传大小
  • 网站开发的基本技术路线做网站和推广工资多少钱
  • 网站建设的分工的论文洛阳网站推广方式
  • 广东省建设教育协会网站公司做网站的费用如何记账
  • 商城网站建设需要什么团队知名企业网站搭建
  • 网站建设公司58佛山专业网站设计公司
  • 河北邯郸做网站的公司公司里面有人员增减要去哪个网站做登记
  • 外贸网站制作推广网上工作平台
  • wordpress安装图片seo的网站建设
  • 安徽金路建设集团有限公司网站洛阳理工学院教务管理系统
  • 龙岩网站建设一般多少钱wordpress 主
  • 陕西省住房与城乡建设厅网站网站建设与维护本科教材
  • 企业网站的建设意义建设教育网站的国内外研究现状
  • 最牛网站建设是谁长沙免费模板建站
  • 东莞企业网站推广技巧做一个网站的预算
  • 做数据的网站xampp网站后台
  • php自己做网站访问量计算网站服务器上线后要怎么做
  • 阿里服务器怎么做网站服务器找手工活做注册网站
  • 公司网站 免费模板软件应用大全
  • 桂林北站时刻表网站推广过程叙述
  • 网站推广宣传最好的手机资源网站
  • 宁波企业网站制作要多少钱网站设计中怎么做二级页面
  • 360元网站建设如何使用seo进行综合查询
  • 工信部信息备案网站查询宝塔 wordpress 规则
  • dw做一个小网站教程wordpress基础版
  • 广州做网站那家好为什么小城市做不出来好的网站
  • 企业资质证书查询官方网站微信小程序推广赚佣金
  • 网站seo外链接电子商务网站建设前的分析