桥接模式
模式 桥接
2023-09-27 14:25:00 时间
桥接的效果1桥椄模式可以保持客户端程序的接口不变,而允许读者修改显示类或要使用的类.这可以防止重新编译一系列复杂的用户接口模块,而只需要重新编译Bridge各实际的最终显示类2.可以分别扩展实现类和Bridage类,二者之间通常不会有相互作用3.对客户端很容易隐藏实现细节
public interface Bridger {
void addData(ArrayList col);
}
public interface VisList{
//add a line to the display
void addLine(Product p);
//remove a line from the display
void removeLine(int num);
}
public class ListBridge : Bridger {
private VisList vis;
//------
public ListBridge(VisList v){
vis = v;
}
//-----
public void addData(ArrayList ar) {
for(int i=0; i ar.Count ; i++) {
Product p = (Product)ar[i];
vis.addLine (p);
}
}
}
public class ProductList : VisList{
private ListBox list;
//-----
public ProductList(ListBox lst) {
list = lst;
}
//-----
public void addLine(Product p) {
list.Items.Add (p.getName() );
}
//-----
public void removeLine(int num) {
if(num =0 num list.Items.Count ){
list.Items.Remove (num);
}
}
}
public class GridList:VisList {
private DataGrid grid;
private DataTable dtable;
private GridAdapter gAdapter;
//-----
public GridList(DataGrid grd) {
grid = grd;
dtable = new DataTable("Products");
DataColumn column = new DataColumn("ProdName");
dtable.Columns.Add(column);
column = new DataColumn("Qty");
dtable.Columns.Add(column);
grid.DataSource = dtable;
gAdapter = new GridAdapter (grid);
}
//-----
public void addLine(Product p) {
gAdapter.Add (p);
}
//-----
public void removeLine(int num) {
}
}
public class Invoke
{
private void init()
{
products = new ArrayList ();
readFile(products); //read in the data file
//create the product list
prodList = new ProductList (lsProd);
//Bridge to product VisList
Bridger lbr = new ListBridge (prodList);
//put the data into the product list
lbr.addData (products);
//create the grid VisList
gridList = new GridList(grdProd);
//Bridge to the grid list
Bridger gbr = new ListBridge (gridList);
//put the data into the grid display
gbr.addData (products);
}
}
//-------------------------------
//可排序的桥
public class SortBridge:ListBridge {
//-----
public SortBridge(VisList v):base(v){
}
//-----
public override void addData(ArrayList ar) {
int max = ar.Count ;
Product[] prod = new Product[max];
for(int i=0; i max ; i++) {
prod[i] = (Product)ar[i];
}
for(int i=0; i max ; i++) {
for (int j=i; j max; j++) {
if(prod[i].CompareTo (prod[j]) 0) {
Product pt = prod[i];
prod[i]= prod[j];
prod[j] = pt;
}
}
}
for(int i = 0; i max; i++) {
vis.addLine (prod[i]);
}
}
}
我学会了,桥接模式 桥接模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
桥接的效果
1桥椄模式可以保持客户端程序的接口不变,而允许读者修改显示类或要使用的类.这可以防止重新编译一系列复杂的用户接口模块,而只需要重新编译Bridge各实际的最终显示类
2.可以分别扩展实现类和Bridage类,二者之间通常不会有相互作用
3.对客户端很容易隐藏实现细节
public interface Bridger {
void addData(ArrayList col);
}
public interface VisList{
//add a line to the display
void addLine(Product p);
//remove a line from the display
void removeLine(int num);
}
public class ListBridge : Bridger {
private VisList vis;
//------
public ListBridge(VisList v){
vis = v;
}
//-----
public void addData(ArrayList ar) {
for(int i=0; i ar.Count ; i++) {
Product p = (Product)ar[i];
vis.addLine (p);
}
}
}
public class ProductList : VisList{
private ListBox list;
//-----
public ProductList(ListBox lst) {
list = lst;
}
//-----
public void addLine(Product p) {
list.Items.Add (p.getName() );
}
//-----
public void removeLine(int num) {
if(num =0 num list.Items.Count ){
list.Items.Remove (num);
}
}
}
public class GridList:VisList {
private DataGrid grid;
private DataTable dtable;
private GridAdapter gAdapter;
//-----
public GridList(DataGrid grd) {
grid = grd;
dtable = new DataTable("Products");
DataColumn column = new DataColumn("ProdName");
dtable.Columns.Add(column);
column = new DataColumn("Qty");
dtable.Columns.Add(column);
grid.DataSource = dtable;
gAdapter = new GridAdapter (grid);
}
//-----
public void addLine(Product p) {
gAdapter.Add (p);
}
//-----
public void removeLine(int num) {
}
}
public class Invoke
{
private void init()
{
products = new ArrayList ();
readFile(products); //read in the data file
//create the product list
prodList = new ProductList (lsProd);
//Bridge to product VisList
Bridger lbr = new ListBridge (prodList);
//put the data into the product list
lbr.addData (products);
//create the grid VisList
gridList = new GridList(grdProd);
//Bridge to the grid list
Bridger gbr = new ListBridge (gridList);
//put the data into the grid display
gbr.addData (products);
}
}
//-------------------------------
//可排序的桥
public class SortBridge:ListBridge {
//-----
public SortBridge(VisList v):base(v){
}
//-----
public override void addData(ArrayList ar) {
int max = ar.Count ;
Product[] prod = new Product[max];
for(int i=0; i max ; i++) {
prod[i] = (Product)ar[i];
}
for(int i=0; i max ; i++) {
for (int j=i; j max; j++) {
if(prod[i].CompareTo (prod[j]) 0) {
Product pt = prod[i];
prod[i]= prod[j];
prod[j] = pt;
}
}
}
for(int i = 0; i max; i++) {
vis.addLine (prod[i]);
}
}
}
摘抄中文版的C#设计模式中的桥接模式一例
桥椄模式主要的意图是"将抽象部分与它的实现部分分离,使它们都可独立的变化"
我学会了,桥接模式 桥接模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
相关文章
- 设计模式-原型模式
- 设计模式-桥接模式
- VMware桥接模式选择宿主机物理网卡
- VMware网络桥接模式与NAT模式共存
- Bridge模式
- 一文带你理解 RocketMQ 广播模式实现机制
- 深入浅出工厂模式
- Rabbitmq常见的模式
- JS_工厂模式
- Vim技能修炼教程(7) - 可视模式
- 请求模式=请求+响应+(Model)数据处理
- 用户模式与内核模式
- vue脚手架 环境变量和模式
- 设计模式之工厂模式浅析
- 深入Java设计模式之桥接模式
- 设计模式-命令模式
- 设计模式-桥接模式
- 迟到的桥接模式
- 设计模式之美:Structural Patterns(结构型模式)
- 程序的载入和运行(五)——《x86汇编语言:从实模式到保护模式》读书笔记25
- 《Java设计模式》之桥接模式
- 如何正确选择数据中心建设模式?
- 设计模式(八):Bridge桥接模式 -- 结构型模式
- 从王者荣耀看设计模式(十七.桥接模式)
- Bridge桥接模式(结构型模式)
- 23种设计模式之桥接模式(Bridge)
- Linux VMware 桥接模式 NAT模式 仅主机模式 的区别
- php桥接模式
- vmware中网络连接的桥接、NAT、主机模式的原理和区别