【GOF23设计模式】桥接模式
来源:http://www.bjsxt.com/
一、【GOF23设计模式】_桥接模式、多层继承结构、银行日志管理、管理系统消息管理、人力资源的奖金计算
未用桥接模式:
package com.test.bridge;
public interface Computer {
void sale();
}
class Desktop implements Computer{
@Override
public void sale() {
System.out.println("销售台式机");
}
}
class Laptop implements Computer{
@Override
public void sale() {
System.out.println("销售笔记本");
}
}
class Pad implements Computer{
@Override
public void sale() {
System.out.println("销售平板电脑");
}
}
class LenovoDesktop extends Desktop{
@Override
public void sale(){
System.out.println("销售联想台式机");
}
}
class LenovoLaptop extends Laptop{
@Override
public void sale(){
System.out.println("销售联想笔记本");
}
}
class LenovoPad extends Pad{
@Override
public void sale(){
System.out.println("销售联想平板电脑");
}
}
class ShenzhouDesktop extends Desktop{
@Override
public void sale(){
System.out.println("销售神舟台式机");
}
}
class ShenzhouLaptop extends Laptop{
@Override
public void sale(){
System.out.println("销售神舟笔记本");
}
}
class ShenzhouPad extends Pad{
@Override
public void sale(){
System.out.println("销售神舟平板电脑");
}
}
class DellDesktop extends Desktop{
@Override
public void sale(){
System.out.println("销售戴尔台式机");
}
}
class DellLaptop extends Laptop{
@Override
public void sale(){
System.out.println("销售戴尔笔记本");
}
}
class DellPad extends Pad{
@Override
public void sale(){
System.out.println("销售戴尔平板电脑");
}
}
使用桥接模式:
package com.test.bridge;
/**
* 电脑类型的维度
*/
public class Computer2 {
protected Brand brand; public Computer2(Brand brand) {
super();
this.brand = brand;
} public void sale(){
brand.sale();
}
} class Desktop2 extends Computer2{
public Desktop2(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
System.out.println("销售台式机");
}
}
class Laptop2 extends Computer2{
public Laptop2(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
System.out.println("销售笔记本");
}
}
package com.test.bridge;
/**
* 品牌
*/
public interface Brand {
void sale();
} class Lenovo implements Brand{
@Override
public void sale() {
System.out.println("销售联想电脑");
}
}
class Dell implements Brand{
@Override
public void sale() {
System.out.println("销售戴尔电脑");
}
}
//新增之前没有的品牌,不用同时新增电脑类型(不用在Computer2中写代码)
class Shenzhou implements Brand{
@Override
public void sale() {
System.out.println("销售神舟电脑");
}
}
package com.test.bridge;
public class Client {
public static void main(String[] args) {
//销售联想的笔记本电脑
Computer2 c = new Laptop2(new Lenovo());
c.sale();
//销售神舟的笔记本电脑
Computer2 c2 = new Desktop2(new Shenzhou());
c2.sale();
}
}
【GOF23设计模式】桥接模式的更多相关文章
- 转:设计模式-----桥接模式(Bridge Pattern)
转自:http://www.cnblogs.com/houleixx/archive/2008/02/23/1078877.html 记得看原始链接的评论. 学习设计模式也有一段时间了,今天就把我整理 ...
- 跟着ZHONGHuan学习设计模式--桥接模式
转载请注明出处! ! !http://blog.csdn.net/zhonghuan1992 全部配套代码均在github上:https://github.com/ZHONGHuanGit/Desig ...
- linkin大话设计模式--桥接模式
linkin大话设计模式--桥接模式 桥接模式是一种结构化模式,他主要应对的是:由于实际的需要,某个类具有2个或者2个以上维度的变化,如果只是使用继承将无法实现功能,或者会使得设计变得相当的臃肿.我们 ...
- java设计模式——桥接模式
一. 定义与类型 定义:将抽象部分与他的具体实现部分分离,使它们都可以独立的变化,通过组合的方式建立两个类之间的联系,而不是继承 类型:结构性. 二. 使用场景 (1) 抽象和具体实现之间增加更多的灵 ...
- 【设计模式】Java设计模式 - 桥接模式
[设计模式]Java设计模式 - 桥接模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一起 ...
- JAVA 设计模式 桥接模式
用途 桥接模式 (Bridge) 将抽象部分与实现部分分离,使它们都可以独立的变化. 桥接模式是一种结构式模式. 结构
- javascript设计模式-桥接模式
在系统中,某些类由于自身逻辑,具有两个或两个以上维度的变化,如何使得该类型可以沿多个方向变化,但又不引入额外的复杂度,这就是桥接模式要解决的问题. 定义:桥接模式(Bridge),将抽象部分与它的实现 ...
- 设计模式 -- 桥接模式(Bridge Pattern)
桥接模式 Bridge Pattern 结构设计模式 定义: 分离抽象部分和实现部分,使他们独立运行. 避免使用继承导致系统类个数暴增,可以考虑桥接模式. 桥接模式将继承关系转化为关联关系,减少耦合, ...
- [Unity 设计模式]桥接模式(BridgePattern)
1.前言 继上一讲IOC模式的基础上继续本讲桥接模式,笔者感觉桥接模式是23种设计模式中桥接模式是最好用但也是最难理解的设计模式之一,23中设计模式就好武侠剧中一本武功秘籍,我们在工作过程中想要熟练运 ...
- 结合JDK源码看设计模式——桥接模式
前言: 在我们还没学习框架之前,肯定都学过JDBC.百度百科对JDBC是这样介绍的[JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Jav ...
随机推荐
- LLVM
http://blog.csdn.net/snsn1984/article/details/41077763
- xcode 插件之KSImageNamed-Xcode
https://github.com/ksuther/KSImageNamed-Xcode 好用,各位记得安装啊
- CentOS 6.5 Python 2.6.6+Flask 用wsgi方式部署在Apache 2.2.15下
1,安装wsgi Apache模块 easy_install mod_wsgi 2,添加/etc/httpd/conf.d/wsgi.conf LoadModule wsgi_module modul ...
- NFC 与 Windows Phone 的那点事儿
说起NFC这个词儿应该已经不陌生了,在我们的生活中有很多使用场景都是使用的这项技术,例如公交卡,门禁,还有银联的闪付卡等等.并且近些年在移动设备上使用的场景也越来越多,例如 对 NFC TAG 的读写 ...
- Ubuntu 中搭建 LAMP 及 php 开发工具
所谓 LAMP,指的是:Linux+Apache+Mysql+Php 仅以此文做一个备忘录 Step1. 安装 Apache 1. 在 terminal 中输入一下命令并执行: sudo apt-ge ...
- CCF推荐国际学术会议
类别如下计算机系统与高性能计算,计算机网络,网络与信息安全,软件工程,系统软件与程序设计语言,数据库.数据挖掘与内容检索,计算机科学理论,计算机图形学与多媒体,人工智能与模式识别,人机交互与普适计算, ...
- C#创建windows服务并定时执行
一.创建window服务 1.新建项目-->选择Windows服务.默认生成文件包括Program.cs,Service1.cs 2.在Service1.cs添加如下代码: System.Tim ...
- 常用的sql语句(找不同位数,找重复)
1.SQL找不同位数 select length(aae135),count(1) from ac01 group by length(aae135) ; ————————————————————— ...
- Ubuntu桌面版本和服务器版本之间的区别(转载)
转载自:http://blog.csdn.net/fangaoxin/article/details/6335992 http://www.linuxidc.com/Linux/2010-11/297 ...
- 网络爬虫urllib2 tornado
百度不支持用tornado请求,可以用美团开放API 测试. import tornado.httpclient def fetch(url): http_header={'User-Agent':' ...