C# 桥接设计模式
时间:2020-05-09
本文章向大家介绍C# 桥接设计模式,主要包括C# 桥接设计模式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FactoryMode { // 桥接设计模式 //桥接模式实现了抽象化与实现化的解耦,使它们相互独立互不影响到对方。 /// <summary> /// 笔的抽象类型 /// </summary> public abstract class BridgePatternPen { PenColorDataAccess _penColorDataAccess; public PenColorDataAccess dataAccess { get { return _penColorDataAccess; } set { _penColorDataAccess = value; } } public abstract void Open(int iIndex); public abstract void Close(int iIndex); public abstract void Recycle(int iCount); } public abstract class PenColorDataAccess { //public abstract void PenIndex(int iIndex); //public abstract void PenColorIndex(int iIndex); //public abstract void PenPower(int iVal); public virtual void PenIndex(int iIndex) { Console.WriteLine(iIndex.ToString()); } public virtual void PenColorIndex(int iIndex) { Console.WriteLine(iIndex.ToString()); } public virtual void PenPower(int iVal) { Console.WriteLine(iVal.ToString()); } } public class laserPen : BridgePatternPen { string strLaserPenName = ""; public laserPen(string strName) { strLaserPenName = strName; Console.WriteLine(strName); } public override void Close(int iIndex) { base.dataAccess.PenIndex(iIndex); } public override void Open(int iIndex) { base.dataAccess.PenPower(iIndex); } public override void Recycle(int iCount) { base.dataAccess.PenColorIndex(iCount); } } public class HGPenDataAccess : PenColorDataAccess { int iPower = 0; string[] strPenChannel = {"100", "200", "300", "400", "500" }; string[] strPenColor = { "Red", "Green", "Black", "Blue", "Yellow" }; string strDataAccessName = ""; public HGPenDataAccess (string strName) { strDataAccessName = strName; Console.WriteLine(strDataAccessName); } public override void PenColorIndex(int iIndex) { if (iIndex > strPenColor.Length) { iIndex = 0; } Console.WriteLine(strPenColor[iIndex]); } public override void PenIndex(int iIndex) { if (iIndex>strPenChannel.Length) { iIndex = 0; } for (int i = 0; i < iIndex; i++) { Console.WriteLine(strPenChannel[i]); } } public override void PenPower(int iVal) { iPower = iVal / 2; Console.WriteLine(iPower.ToString()); } } } 使用参考: //===桥接模式 BridgePatternPen bridgePatternPen = new laserPen("JPT_HightPower"); bridgePatternPen.dataAccess =new HGPenDataAccess("JPT_HightPowerDataAccessName"); bridgePatternPen.Open(12); bridgePatternPen.Recycle(2); bridgePatternPen.Close(4); Console.ReadKey();
桥接模式对于抽象和实现可以很好的分离,从而降低修改实现代码时,对整体的影响不大,只需修改相对应的实现部件即可
优点:
1、把抽象接口与其实现解耦。
2、抽象和实现可以独立扩展,不会影响到对方。
3、实现细节对客户端透明,隐藏了具体实现细节;
参考描述:https://www.cnblogs.com/zhili/p/BridgePattern.html
原文地址:https://www.cnblogs.com/SoftZoro20181229/p/12854780.html
- 四、请求库之selenium模块
- python中列表的sort方法使用详解
- 深度学习2017成果展
- Python正则表达式中的re.S的作用
- 图片转文字居然这么简单,多亏了这几个神器!
- 三、请求库之requests模块
- 升级 微信技术输出 时尚新门店尝鲜刷脸支付
- WSP Global品牌升级 启用3声母域名
- 一、爬虫基本原理
- python 中__setattr__, __getattr__,__getattribute__, __call__使用方法
- 量子技术与人工智能:同时进化的双生子
- TCP协议三次握手与四次挥手通俗解析
- Silverlight/aspx/ajax/mvc的UI自动化测试
- Office Open XML学习(1)-创建excel文档,并向单元格中插入字符串
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 设计模式实战-建造者模式,做任何事情都需要步步为营
- 设计模式实战-单例模式,我就是天下无双
- 设计模式实战-抽象工厂模式,分而治之
- 搞定常被问的数组和排序算法,附面试题
- 玩转 Java 时间 + 面试题
- 【分布式技术】分布式系统调度架构之两层调度,解决单体调度问题
- 一致性哈希算法,在分布式开发中你必须会写,来看完整代码
- FFmpeg 开发(04):FFmpeg + OpenGLES 实现音频可视化播放
- 【Postgres扩展】pg_auto_failover支持高可用性和自动故障转移
- 「PostgreSQL」用MapReduce的方式思考,但使用SQL
- 每天百万交易的支付系统,生产环境该怎么设置JVM堆内存大小
- gb格式注释文件转换成gff3注释文件格式
- 有人问你Elasticsearch分布式架构原理,将这篇文章丢过去
- 每日两题 T1
- 每日两题 T2