换皮肤?系列工厂/抽象工厂(模式)的实现

有时候我们见到换皮肤,切换系列产品(族),是不是所有代码重新来过一遍呢,不是的,这时候抽象工厂/系列工厂模式应运而用.抽象工厂的基本脉络就是继承于父级产品类的多个抽象产品类的具体实现。

以下是实现:

/**
 * 工厂的父类-抽象工厂-产生系列产品的方法
 * @author Rick
 *
 */
public abstract class AbstractFactory {
public abstract Vechicle createVehicle();
public abstract Weapon createWeapon();
public abstract Food createFood();
}


-------------------------------------------------------------------------------------------------------------------------

public class AK47 extends Weapon {
public void shoot() {
System.out.println("пепепе...");
}
}


-------------------------------------------------------------------------------------------------------------------------

public class Apple extends Food {
public void printName() {
System.out.println("apple"); 
}
}


-------------------------------------------------------------------------------------------------------------------------

public class Broom extends Vechicle {


public void run() {
System.out.println("һ·ɳӾѩ؉Ѽ׸4broom...");
}

}

----------------------------------------------------------------------------------------------------------------------

/**
 * Singleģʽ
 * @author Administrator
 *
 */
public class Car extends Vechicle {

public void run() {
System.out.println("ð؅ҌѼƜאcar...");
}
}

-------------------------------------------------------------------------------------------------------------------------

public class DefaultFactory extends AbstractFactory {


@Override
public Vechicle createVehicle() {
// TODO Auto-generated method stub
return new Car();
}


@Override
public Weapon createWeapon() {
// TODO Auto-generated method stub
return new AK47();
}


@Override
public Food createFood() {
// TODO Auto-generated method stub
return new Apple();
}

}


--------------------------------------------------------------------------------------

public abstract class Food {
public abstract void printName();
}


--------------------------------------------------------------------------------------

public class MagicFactory extends AbstractFactory {
public Broom createBroom() {
return new Broom();
}

public MagicStick createMagicStick() {
return new MagicStick();
}

public MushRoom createMushRoom() {
return new MushRoom();
}


@Override
public Vechicle createVehicle() {

return new Broom();
}


@Override
public Weapon createWeapon() {

return new MagicStick();
}


@Override
public Food createFood() {

return new MushRoom();
}
}


----------------------------------------------------------------------------------------------------------------------------------

public class MagicStick extends Weapon {


@Override
public void shoot() {
System.out.println("Fire hu hu hu ...");
}

}

----------------------------------------------------------------------------------------------------------------------------------

public interface Moveable {
void run();
}


-----------------------------------------------------------------------------------------------------------------------------------

public class MushRoom extends Food {


@Override
public void printName() {
System.out.println("mushroom...");
}


}

-----------------------------------------------------------------------------------------------------------------------------------

/**
 * 系列产品
 * @author Rick
 *
 */
public class Test {
public static void main(String[] args) {
// DefaultFactory f = new DefaultFactory();
AbstractFactory f = new MagicFactory();
Vechicle v = f.createVehicle();
v.run();
Weapon w = f.createWeapon();
w.shoot();
Food a = f.createFood();
a.printName();
}
}


----------------------------------------------------------------------------------------------------------------------

public abstract class Vechicle {
public abstract void run();
}


----------------------------------------------------------------------------------------------------------------------

public abstract class Weapon {
public abstract void shoot();
}



起航!TAMAO!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值