factory

interface Game {
void play();
}


interface GameFactory {
Game getGame();
}


class Chess implements Game {
public void play() {

}
}


class ChessFactory implements GameFactory {
public Game getGame() {
return new Chess();
}
}


class Checkers implements Game {
public void play() {

}
}


class CheckersFactory implements GameFactory {
public Game getGame() {
return new Checkers();
}
}


public class Games {
public static void play(GameFactory factory) {
Game newGame = factory.getGame();
newGame.play();
}

public static void main(String[] args) {
play(new ChessFactory());
play(new CheckersFactory());
}

}


匿名内部类实现

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

a:一个类只需要一个工厂,所以用static

interface Service {
void method1();
void method2();
}


interface ServiceFactory {
Service getService();
}


class Implement1 implements Service {
private Implement1() {

}

private static ServiceFactory factory = new ServiceFactory() {
public Service getService() {
return new Implement1();
}
};

public static ServiceFactory getFactory() {
return factory;
}

public void method1() {
System.out.println("Imple1 method1");
}

public void method2() {
System.out.println("Imple1 method2");
}

}


class Implement2 implements Service {
private Implement2() {

}

public static ServiceFactory factory = new ServiceFactory() {
public Service getService() {
return new Implement2();
}
};

public static ServiceFactory getFactory() {
return factory;
}

public void method1() {
System.out.println("Imple2 method1");
}

public void method2() {
System.out.println("Imple2 method2");
}
}


public class Factories {
public static void ServiceConsume(ServiceFactory factory) {
Service service = factory.getService();
service.method1();
service.method2();
}

public static void main(String[] args) {
Factories.ServiceConsume(Implement1.getFactory());
Factories.ServiceConsume(Implement2.getFactory());
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值