桥梁模式的用意:一个行为有2个因素引起他变化比如电脑,有台式电脑,笔记本电脑等等,然后笔记本电脑又由不同的厂家生产的。这边引起电脑变化的因素有2个 一个是电脑的类型 另一个是电脑的生产厂家。
package com.djk.design.struct.brige;
public interface Computer
{
void desc();
}
package com.djk.design.struct.brige;
public interface Company
{
void companyName();
}
package com.djk.design.struct.brige;
public abstract class DeskComputer implements Computer
{
private Company company;
public DeskComputer(Company company) {
super();
this.company = company;
}
@Override
public void desc()
{
if (company != null)
{
company.companyName();
}
System.out.println("台式电脑");
method();
}
abstract void method();
}
package com.djk.design.struct.brige;
public class DeskComputerImpl extends DeskComputer
{
public DeskComputerImpl(Company company) {
super(company);
}
@Override
void method() {
}
}
package com.djk.design.struct.brige;
public abstract class PersonComputer implements Computer
{
private Company company;
public PersonComputer(Company company) {
super();
this.company = company;
}
@Override
public void desc()
{
if (company != null)
{
company.companyName();
}
System.out.println("个人电脑");
method();
}
abstract void method();
}
package com.djk.design.struct.brige;
public class PersonComputerImpl extends PersonComputer
{
public PersonComputerImpl(Company company)
{
super(company);
}
@Override
void method()
{
}
}
package com.djk.design.struct.brige;
public class AppleCompany implements Company
{
@Override
public void companyName()
{
System.out.println("苹果公司");
}
}
package com.djk.design.struct.brige;
public class HpCompany implements Company
{
@Override
public void companyName() {
System.out.println("惠普公司");
}
}
package com.djk.design.struct.brige;
public class Client {
public static void main(String[] args)
{
Computer computer1 = new PersonComputerImpl(new HpCompany());
computer1.desc();
Computer computer2 = new DeskComputerImpl(new AppleCompany());
computer2.desc();
}
}