bridge - 对象结构型模式

本文深入探讨了桥接模式的设计理念,旨在分离抽象与其实现,让两者能够独立变化。通过具体的代码实例,展示了如何利用桥接模式来创建可扩展的系统架构。同时,介绍了抽象工厂在模式中的应用,以及其在对象存储方面的限制。

   1.意图
            将抽象部分和它的实现部分分离,使它们都可以独立变化
    2.参与者
      Abstraction - 定义抽象接口
                  - 维护一个指向Implementor类型对象的指针
      RefindAbstraction -扩充由Abstraction定义的接口
      Implementor  -定义实现类的接口,该接口不一定与 Abstraction的接口完全
                                         一致,事实上这两个接口可以完全不同,一般来讲,Implementor
                                         接口仅提供基本操作,而Abstraction则定义了基于这些操作的较高
                                         层的操作
     ConcreteImplementor - 实现Implementor接口并定义它的实现。

 

3.结构

4.代码

public interface Abstraction {
	public Implementor getImplementor();
}

public class RefindAbstractionA implements Abstraction {

	@Override
	public Implementor getImplementor() {
		return (Implementor) AbstractFactory.Instance().getObject("A");
	}
	public void draw(){
    	System.out.println("RefindAbstractionA");
    	getImplementor().draw();
    }
}

public class RefindAbstractionB implements Abstraction {

	@Override
	public Implementor getImplementor() {
		return (Implementor) AbstractFactory.Instance().getObject("B");
	}
    public void draw(){
    	System.out.println("RefindAbstractionB");
    	getImplementor().draw();
    }
}

public class ConcreteImplementorA implements Implementor {

	@Override
	public void draw() {
		System.out.println("draw line");
		
	}

}

public class ConcreteImplementorB implements Implementor {

	@Override
	public void draw() {
		System.out.println("draw clycle");
	}

}

public class AbstractFactory {
	private Map<String, Object> ObjectMap = new HashMap<String, Object>();
    private final static AbstractFactory abstractFactory = new AbstractFactory();
    private AbstractFactory(){
    	register("A",new ConcreteImplementorA());
    	register("B",new ConcreteImplementorB());
    }
    public static AbstractFactory Instance(){
    	return abstractFactory;
    }
    public void register(String flag,Object o){
    	Object oo = ObjectMap.get(flag);
    	if(oo != null){
    		throw new RuntimeException(flag+"标识已存在请重新定义一个标识!");
    	}
    	ObjectMap.put(flag, o);
    }
    public Object getObject(String flag){
    	Object o = ObjectMap.get(flag);
    	if(o == null){
    		throw new RuntimeException(flag+"标识不存在!");
    	}
    	return o;
    }
}

public class Client {
   public static void main(String[] args) {
	   RefindAbstractionB B = new RefindAbstractionB();
	   B.draw();
    }
}

注释:抽象工厂我只是存储对象并没有新建对象,所以对象存在可以改变的对象变量的时候不要使用。

源海客户信息管理软件(Yuanhi CIM)是源海客户关系管理系统简易篇,适用于个人用户及各类小型企业业主及营销人员使用,属于CRM、营销、办公管理类软件。软件主要特点:1、电脑记录并管理电话、传真、邮件、互联网络等现代网络营销手段;分类记录各项目客户沟通的记录数据。2、方便灵活的查询、索引、数据过滤及导入数据到EXCEL,输入数据重复时自动提示所有相同信息资料。3、三重数据安全处理,设计了权限管理、数据备份、数据加密功能,使数据得到了有效的保密和预防丢失。4、多功能群发邮件及退订邮件功能,对正式邮件、临时邮件、导入邮件地址进行有针对性多功能分类邮件群发。5、客户计划、事件提醒功能,可同时进行音乐和文字提醒。6、免费在线软件自动下载升级包升级。软件分为五大部分:系统管理、基础数据、客户信息管理、客户沟通管理、辅助功能系统管理:主要使用对象为系统管理员;主要功能模块:软件注册,软件升级,权限分配,数据备份、修复、邮箱配置、系统选项配置等;基础数据:主要使用对象为产品管理人员、业务员等;主要功能模块:客户基础资料、客户接触方式、公司信息、员工信息等客户信息管理:客户信息输入、删除、修改、查询、打印、过滤、数据导入到EXCEL及简便客户邮件等客户沟通管理:主要功能模块:客户需求、客户投诉、客户联系、客户联系、客户定单记录、邮件群发及邮件退订等;辅助功能:主要使用对象为本软件的使用人员,它包括工具和帮助两部分,功能是方便使用人员计算、事务音乐提醒,帮助使用人员充分掌握和运用本软件的所有功能。 服务:sale@yuanhi.net
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值