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

云南房产网站建设谷歌浏览器网页

云南房产网站建设,谷歌浏览器网页,旅游网站 建设平台分析,浙江建设监理协会网站一、问题场景 现在对”不同手机类型“的 “不同品牌”实现操作编程(比如: 开机、关机、上网,打电话等) 二、传统解决方案 传统方案解决手机使用问题类图: 三、传统方案分析 传统方案解决手机操作问题分析 1、扩展性问题(类爆炸),如果我们…

一、问题场景
现在对”不同手机类型“的 “不同品牌”实现操作编程(比如: 开机、关机、上网,打电话等)

二、传统解决方案

传统方案解决手机使用问题类图:
在这里插入图片描述

三、传统方案分析
传统方案解决手机操作问题分析

1、扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品 牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。

2、违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这 样增加了代码维护成本。

3、我们之前讲过,解决多层次继承导致类爆炸的问题,可以使用“组合大于继承”的设计原则,而桥接模式就是“组合大于接触”设计原则的实现。

四、桥接模式
1、定义

当一个类存在两个或者多个独立变化维度时,我们通过组合的方式,让这两个或多个维度可以独立进行扩展。

也就是,

将抽象和实现解耦,放在两个不同的类层次中,让它们可以独立变化。

2、特点

桥接模式基于“组合优于继承”和“单一职责”原则,通过使用封装,组合以及继承等行为让不同的类承担不同的职责。主要特点是把抽象(Abstraction)和行为实现(Implementation)分离开来,从而保持各部分的独立性以及应对它们的功能扩展。

3、原理类图

在这里插入图片描述

(1)Client类: 桥接模式的调用者

(2)抽象类(Abstraction): 维护了Implementor/即它的实现子类ConcretelmplementorA…,二者是组合关系,Abstraction充当桥接类

(3)RefinedAbstraction: 是Abstraction抽象类的子类

(4)Implementor: 行为实现类的接口

(5)ConcreteImplementorA/B: 行为的具体实现类

4、代码实现

public abstract class Phone {//组合品牌private Brand brand;//构造器public Phone(Brand brand) {super();this.brand = brand;}protected void open() {this.brand.open();}protected void close() {brand.close();}protected void call() {brand.call();}}//折叠式手机类,继承 抽象类 Phone
public class FoldedPhone extends Phone {//构造器public FoldedPhone(Brand brand) {super(brand);}public void open() {super.open();System.out.println(" 折叠样式手机 ");}public void close() {super.close();System.out.println(" 折叠样式手机 ");}public void call() {super.call();System.out.println(" 折叠样式手机 ");}
}//直立式手机类,继承 抽象类 Phone
public class UpRightPhone extends Phone {//构造器public UpRightPhone(Brand brand) {super(brand);}public void open() {super.open();System.out.println(" 直立样式手机 ");}public void close() {super.close();System.out.println(" 直立样式手机 ");}public void call() {super.call();System.out.println(" 直立样式手机 ");}
}//接口
public interface Brand {void open();void close();void call();
}public class XiaoMi implements Brand {@Overridepublic void open() {// TODO Auto-generated method stubSystem.out.println(" 小米手机开机 ");}@Overridepublic void close() {// TODO Auto-generated method stubSystem.out.println(" 小米手机关机 ");}@Overridepublic void call() {// TODO Auto-generated method stubSystem.out.println(" 小米手机打电话 ");}}public class Vivo implements Brand {@Overridepublic void open() {// TODO Auto-generated method stubSystem.out.println(" Vivo手机开机 ");}@Overridepublic void close() {// TODO Auto-generated method stubSystem.out.println(" Vivo手机关机 ");}@Overridepublic void call() {// TODO Auto-generated method stubSystem.out.println(" Vivo手机打电话 ");}}//客户端
public class Client {public static void main(String[] args) {//获取折叠式手机 (样式 + 品牌 )Phone phone1 = new FoldedPhone(new XiaoMi());phone1.open();phone1.call();phone1.close();System.out.println("=======================");Phone phone2 = new FoldedPhone(new Vivo());phone2.open();phone2.call();phone2.close();System.out.println("==============");UpRightPhone phone3 = new UpRightPhone(new XiaoMi());phone3.open();phone3.call();phone3.close();System.out.println("==============");UpRightPhone phone4 = new UpRightPhone(new Vivo());phone4.open();phone4.call();phone4.close();}}

5、桥接模式适用场景

适用于不希望使用继承或者因为多层次继承导致系统类的个数急剧增加。比如:

(1)JDC驱动程序

(2)银行转账系统

转账分类:网上转账,柜台转账,AMT转账

转账用户分类:普通用户,银行卡用户,金卡用户

(3)消息管理

消息类型:即时消息,延时消息

消息分类:手机短信,邮件消息,QQ消息

http://www.sczhlp.com/news/20482/

相关文章:

  • 揭阳网站如何制作长春百度网站快速排名
  • 做网站时空间的选择抖音seo点击软件排名
  • ftp查看网站后台密码新闻头条今日要闻国内
  • 南海网站智能推广北京优化网站建设
  • 淘宝电商台湾专线网站建设平台推广文案
  • 深圳app开发合作seo网络优化是什么意思
  • 电影vip免费网站怎么做的百度推广开户公司
  • 告诉搜索引擎网站建设中什么是sem和seo
  • 个人 网站建设方案书 备案nba排名
  • 重庆有网站公司英文网站推广
  • 黄山建设网站公司电话广州网络营销公司
  • 读大语言模型01导论
  • 一般vs做的网站的总体框架2022年每日新闻摘抄10一30字
  • 锦州网站设计怎么注册域名
  • 计算机网络技术网站开发与设计新东方雅思培训机构官网
  • wordpress 扩展数据库关键词seo是什么意思
  • 网站建设开发语言西安seo外包公司
  • 北京网站建设的关键词google推广妙招
  • 建设行网站修改电话百度指数三个功能模块
  • 长沙电商网站建设网络推广免费网站
  • 域名注册过后怎么使用南宁seo全网营销
  • 网站被采集 更换模板网络软文范例
  • 怎么做网站 教学腾讯企点注册
  • 哪里有免费的网站域名网络营销和网络推广
  • 网站里会自动换图怎么做百度网址浏览大全
  • 免费搭建网站主机公司网站排名
  • 深圳网站优化包年企业网站推广策略
  • 制作图片库seo是什么的
  • 女生做网站编辑好还是广州网络推广平台
  • 淘客怎么样做网站百度识图查另一半情头