简单工厂模式
public class SimpleFactory { public static void main(String[] args) { Apple apple = FuritFactory.getApple(); Banana banana = FuritFactory.getBanana(); apple.info(); banana.info(); } } interface Furit{ void info(); } class Apple implements Furit{ @Override public void info() { System.out.println("i am apple"); } } class Banana implements Furit{ @Override public void info() { System.out.println("i am banana"); } } class FuritFactory{ public static Apple getApple(){ return new Apple(); } public static Banana getBanana(){ return new Banana(); } }
工厂方法
public class FunctionFactory { public static void main(String[] args) { FuritFactory appleFuritFactory = new AppleFuritFactory(); FuritFactory bananaFuritFactory = new BananaFuritFactory(); appleFuritFactory.getFurit().info(); bananaFuritFactory.getFurit().info(); } } interface Furit{ void info(); } class Apple implements Furit{ @Override public void info() { System.out.println("i am apple"); } } class Banana implements Furit{ @Override public void info() { System.out.println("i am banana"); } } class AppleFuritFactory extends FuritFactory{ @Override public Furit getFurit() { return new Apple(); } } class BananaFuritFactory extends FuritFactory{ @Override public Furit getFurit() { return new Banana(); } } abstract class FuritFactory{ public abstract Furit getFurit(); }
抽象工厂
当工厂方法出现产品族时,比如需要添加南方??,北方??,南方??,北方??时,你需要添加4个对应当产品和工厂,使用抽象工厂时,只需要添加产品,和修改工厂。并且一个工厂能创建该族的多个产品。(我安??,??划分,也可以按南北划分)
public class FunctionFactory { public static void main(String[] args) { FuritFactory appleFuritFactory = new AppleFuritFactory(); FuritFactory bananaFuritFactory = new BananaFuritFactory(); appleFuritFactory.getEastFurit().info(); bananaFuritFactory.getNorthFurit().info(); } } interface Furit{ void info(); } class Apple implements Furit{ @Override public void info() { System.out.println("i am apple"); } } class NorthApple extends Apple{ @Override public void info() { System.out.println("i am north apple"); } } class EastApple extends Apple{ @Override public void info() { System.out.println("i am east apple"); } } class Banana implements Furit{ @Override public void info() { System.out.println("i am banana"); } } class NorthBanana extends Apple{ @Override public void info() { System.out.println("i am north banana"); } } class EastBanana extends Apple{ @Override public void info() { System.out.println("i am east banana"); } } class AppleFuritFactory extends FuritFactory{ @Override public Furit getNorthFurit() { return new NorthApple(); } @Override public Furit getEastFurit() { return new EastApple(); } } class BananaFuritFactory extends FuritFactory{ @Override public Furit getNorthFurit() { return new NorthBanana(); } @Override public Furit getEastFurit() { return new EastBanana(); } } abstract class FuritFactory{ public abstract Furit getNorthFurit(); public abstract Furit getEastFurit(); }
原文:https://www.cnblogs.com/yongjixl/p/10969045.html