例子:手机通讯录、游戏类
class HandsetGame{
public void Run() {
}
}
//手机品牌M
class HandsetBrandM extends HandsetBrand{
}
//手机品牌N
class HandsetBrandN extends HandsetBrand{
}
//手机品牌M的游戏
class HandsetBrandMgame extends HandsetBrandM{
public void Run() {
System.out.println("运行M品牌手机游戏");
}
}
//手机品牌N的游戏
class HandsetBrandMgame extends HandsetBrandM{
public void Run() {
System.out.println("运行N品牌手机游戏");
}
}
//手机品牌M的通讯录
class HandsetBrandMAddressList extends HandsetBranM{
public void Run() {
System.out.println("运行M品牌手机通讯录");
}
}
//手机品牌N的通讯录
class HandsetBrandMAddressList extends HandsetBranM{
public void Run() {
System.out.println("运行M品牌手机通讯录");
}
}
public class test{
public static void main(String[] args) {
HandsetBrand ab;
ab = new HandsetBrandMaAddressLisst();
ab.Run();
ab = new HandsetBrandMGame();
ab.Run();
ab = new HandsetBrandMAddressList();
ab.Run();
ab = new HandsetBrandName();
ab.Run();
}
}
合成/聚合 复用原则,尽量 使用合成/聚合,尽量 不要使用类继承。
abstract class HandsetSoft{
public abstract void Run();
}
class HandsetGame extends HandsetSoft{
public void Run() {
System.out.println("运行手机游戏");
}
}
class HandsetAddressList extends HandsetSoft{
public void Run() {
System.out.println("运行手机通讯录");
}
}
abstract class HandsetBand {
protected HandsetSoft soft;
public void SetHandsetSoft(HandsetSoft soft) {
this.soft = soft;
}
public abstract void Run() ;
}
class HandsetBrandN extends HandsetBrand{
public void Run() {
soft.Run();
}
}
class HandsetBrandM extends HandsetBrand{
public void Run() {
soft.Run();
}
}
public class test{
public static void main(String[] args) {
HandsetBrand ab;
ab = new HandsetBrandMaAddressLisst();
ab.Run();
ab = new HandsetBrandMGame();
ab.Run();
ab = new HandsetBrandMAddressList();
ab.Run();
ab = new HandsetBrandName();
ab.Run();
}
}
桥接模式:将抽象部分与它的实现部分分离,使它们可以独立地变化。
abstract class Implementor{
public abstract void Operator();
}
class ConcreteImplementorA extends Implementor{
public void Operation() {
System.out.println("具体实现A的实现方法");
}
}
class ConcreteImplementorB extends Implementor{
public void Operation() {
System.out.println("具体实现B的方法");
}
}
class Abstraction{
protected Implementor implementor;
public void SetImplementor (Implementor implementor) {
this.implementor = implementor;
}
public void Operation() {
implementor.Operation();
}
}
public class test{
public static void main(String[] args) {
HandsetBrand ab;
ab = new HandsetBrandMaAddressLisst();
ab.Run();
ab = new HandsetBrandMGame();
ab.Run();
ab = new HandsetBrandMAddressList();
ab.Run();
ab = new HandsetBrandName();
ab.Run();
}
}