62,620
社区成员
发帖
与我相关
我的任务
分享interface Cycle{void run();}
interface CycleFactory{Cycle getCycle();}
class Unicycle implements Cycle{
public void run(){
System.out.println("Unicycle!");
}
}
class UnicycleFactory implements CycleFactory{
public Cycle getCycle(){return new Unicycle();}
}
class Bicycle implements Cycle{
public void run(){
System.out.println("Bicycle!");
}
}
class BicycleFactory implements CycleFactory{
public Cycle getCycle(){ return new Bicycle();}
}
public class CycleTest {
public static void runBicycle(CycleFactory fact){
Cycle c = fact.getCycle();
c.run();
}
public static void main(String[] args) {
runBicycle(new UnicycleFactory());
runBicycle(new BicycleFactory());
}
}
interface Cycle{void run();}
class Unicycle implements Cycle{
public void run(){
System.out.println("Unicycle!");
}
}
class Bicycle implements Cycle{
public void run(){
System.out.println("Bicycle!");
}
}
public class CycleTest {
public static void runBicycle(Cycle c){
c.run();
}
public static void main(String[] args) {
runBicycle(new Unicycle());
runBicycle(new Bicycle());
}
}

说实话 看了半天楼主的两种代码 觉得是没多大差距 明天再看看 先收藏了interface ICycle {
void run();
void setWheel(IWheel wheel);
}
Unicycle implements ICycle {
private IWheel iWheel;
@Override
public void run() {System.out.println("Unicycle of wheel: " + iWheel;)}
public void setWheel(IWheel wheel) {iWheel = wheel;}
}
Bicycle implements ICycle {
private IWheel iWheel;
@Override
public void run() {System.out.println("Bicycle of wheel: " + iWheel;)}
public void setWheel(IWheel wheel) {iWheel = wheel;}
}
GoodWheel implements IWheel {
@Override
public String toString() {return "good wheel";}
}
BadWheel implements IWheel {
@Override
public String toString() {return "bad wheel";}
}
interface ICycleFactory{
ICycle getCycle();
}
class GoodWheelBicycleFactory implements ICycleFactory {
@Override
public ICycle getCycle() {
iCycle cycle = new Bicycle();
cycle.setWheel(new GoodWheel());
return cycle;
}
}
public static void main (final String[] args) {
runCycle (new GoodWheelBicycleFactory());
}
对比下面的代码:
interface ICycle {
void run();
void setWheel(IWheel wheel);
}
Unicycle implements ICycle {
private IWheel iWheel;
@Override
public void run() {System.out.println("Unicycle of wheel: " + iWheel;)}
public void setWheel(IWheel wheel) {iWheel = wheel;}
}
Bicycle implements ICycle {
private IWheel iWheel;
@Override
public void run() {System.out.println("Bicycle of wheel: " + iWheel;)}
public void setWheel(IWheel wheel) {iWheel = wheel;}
}
GoodWheel implements IWheel {
@Override
public String toString() {return "good wheel";}
}
BadWheel implements IWheel {
@Override
public String toString() {return "bad wheel";}
}
public static void main (final String[] args) {
Cycle cycle = new Bicycle();
cycle.setWheel(new Wheel());
runCycle (cycle);
}
这里只有一个cycle,假设不同的Cycle有不同的Wheel,这样排列组合一下光是这里已经有4个组合了。在一个复杂的程序里,组件的数量远远不止这一些,而且你使用API的时候,如果组件的装配由你自己来实现,这将是一件多么混乱的事情。所以就有了工厂模式,把某一种组件的装配包装成一个有意义的类,便于使用。
