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

网站建设套餐价格/整站关键词快速排名

网站建设套餐价格,整站关键词快速排名,产品开发项目管理全流程,北京建设网站公司承上:实战java设计模式(二)简单工厂模式 目录1 介绍2 例子2.1 手机接口2.2 手机类实现2.3 工厂父类2.4 工厂实现2.5 测试主类3 例子升华4 总结4.1 核心角色4.2 核心代码结构1 介绍 回顾简单工厂模式,存在的问题产品和工厂存在违反…

承上:实战java设计模式(二)简单工厂模式

目录

  • 1 介绍
  • 2 例子
    • 2.1 手机接口
    • 2.2 手机类实现
    • 2.3 工厂父类
    • 2.4 工厂实现
    • 2.5 测试主类
  • 3 例子升华
  • 4 总结
    • 4.1 核心角色
    • 4.2 核心代码结构

1 介绍

回顾简单工厂模式,存在的问题产品和工厂存在违反了开闭原则,即增加了产品类,必须在工厂类中添加注册。工厂方法模式就是为了解决这样的问题。实现产品和工厂的解耦。

2 例子

以手机生产工厂生产手机为例子,手机有展示logo的功能,有华为、苹果、小米三种手机需要生产。

2.1 手机接口

//手机接口
interface Phone {//显示logovoid showLogo();//当然手机还有其他方法……
}

2.2 手机类实现

//苹果手机类
class ApplePhone implements Phone {//手机的其他属性和方法@Overridepublic void showLogo() {System.out.println("这是苹果手机的LOGO");}
}
//小米手机
class XiaoMiPhone implements Phone {@Overridepublic void showLogo() {System.out.println("这是小米手机的LOGO");}
}
//华为手机
class HuaweiPhone implements Phone {@Overridepublic void showLogo() {System.out.println("这是华为手机的LOGO");}
}

2.3 工厂父类

//工厂父类
interface PhoneFactory {//生产一个手机Phone getPhone();
}

2.4 工厂实现

//苹果手机厂
class ApplePhoneFactory implements PhoneFactory {@Overridepublic Phone getPhone() {return new ApplePhone();}
}
//华为手机厂
class HuaweiPhoneFactory implements PhoneFactory {@Overridepublic Phone getPhone() {return new HuaweiPhone();}
}
//小米手机厂
class XiaoMiPhoneFactory implements PhoneFactory {@Overridepublic Phone getPhone() {return new XiaoMiPhone();}
}

2.5 测试主类

public class Main {public static void main(String[] args) {//根据需求建立手机厂PhoneFactory huaweiPhoneFactory = new HuaweiPhoneFactory();PhoneFactory xiaomiPhoneFactory = new XiaoMiPhoneFactory();PhoneFactory applePhoneFactory = new ApplePhoneFactory();//在厂里面生产具体型号的手机Phone huaweiPhone = huaweiPhoneFactory.getPhone();Phone xiaomiPhone = xiaomiPhoneFactory.getPhone();Phone applePhone = applePhoneFactory.getPhone();//使用手机huaweiPhone.showLogo();xiaomiPhone.showLogo();applePhone.showLogo();}
}

注意一个细节:直接声明的是接口的数据类型,只关心接口里面定义的操作,而不关心具体实现的额外操作,这样可以很好的达到迪米特法则。

3 例子升华

工厂方法模式很好的实现了工厂和产品的解耦 ,但是问题是可能会出现类爆炸的问题,没添加一个新的产品就要实现一个新的产品工厂类。

4 总结

4.1 核心角色

  • 产品抽象:定义关心的通用产品方法;
  • 产品实现:实现产品抽象,具体的产品类;
  • 抽象工厂:定义工厂的通用方法,注意核心方法是返回一个产品(抽象产品数据类型);
  • 工厂实现:每一个产品都要实现一个生产它的工厂;

4.2 核心代码结构

每一个产品都要有一个工厂生产它,这些工厂实现了同一个生产产品的接口方法。

http://www.lbrq.cn/news/1326871.html

相关文章:

  • wordpress支持论坛/济南seo整站优化招商电话
  • 网站聊天室怎样做炫彩马甲/免费发广告的软件
  • 东莞整合网站建设开发/今日财经新闻
  • 横沥镇做网站/长沙官网seo推广
  • 重庆建设工程信息网官网入口查询/seo的中文含义是
  • wordpress服装模板/sem优化软件选哪家
  • 大连华南网站制作公司/网络营销计划包括哪七个步骤
  • 建设网站上传软件/seo搜索引擎工具
  • 网站建设维护人员岗位/百度推广排名怎么做的
  • 网站后台无上传图片按钮/网站域名查询
  • 个人做网站最方便的方法/推广引流哪个软件最好
  • 哈尔滨网站建设30t/seo外推
  • 徐州建设网站/东莞头条最新新闻
  • 那个网站可以找人做设计师/360建站系统
  • 遵义网站开发培训/百度写一篇文章多少钱
  • 免费网站可以做cpa/前端seo是什么意思
  • 北京微信网站设计报价/宁波网站推广优化公司电话
  • 地方网站做相亲赢利点在哪/关键字广告
  • wordpress 多站点插件/国际免费b站
  • 建立名词/上海外包seo
  • 云空间搭建网站/济宁百度推广公司有几家
  • 网站建设项目及费用/搜狗搜索旧版本
  • 用c 做网站在Linux上/知乎怎么申请关键词推广
  • 青海省住房和城乡建设厅网站首页/网站关键词怎么设置
  • 帮公司做网站运营/新闻危机公关
  • 长春seo公司网站/深圳最好的外贸seo培训
  • 无锡网站制作 高端网站定制/成都seo的方法
  • 兖州网站开发/网站推广是什么
  • 网站群建设论文/有什么功能
  • 北京网站设计的公司/旅游新闻热点
  • U-Net vs. 传统CNN:为什么医学图像分割需要跳过连接?
  • Qt Quick 3D 基础与应用
  • 计算机存储正数,负数
  • 【动态规划 | 多状态问题】动态规划求解多状态问题
  • 洛谷刷题7.30
  • SpringBoot整合RocketMQ(rocketmq-client.jar)