简单工厂模式属于创建型模式,又叫做静态工厂方法(static factory method)。简单工厂模式是由一个工厂对象决定创建哪一种产品类实例。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为不同工厂模式的一个特殊实现
值得注意的是,简单工厂模式并不属于gof设计模式之一。但是他说抽象工厂模式,工厂方法模式的基础,并且有广泛得应用
从上图中可以看出,简单工厂模式由三部分组成:具体工厂、抽象产品和具体产品:
public class apple { /** * 采集苹果 */ public void get(){ system.out.println("采集苹果"); } }
public class banana { /** * 采集香蕉 */ public void get(){ system.out.println("采集香蕉"); } }
public class mainclass{ public static void main(string[] args){ /** * 最基本的实例化方式 */ //实例化一个apple apple apple = new apple(); //实例化一个banana banana banana = new banana(); apple.get(); banana.get(); } }
public interface fruit { public void get(); }
public class apple implements fruit{ @override //重写get方法 public void get(){ system.out.println("采集苹果"); } }
public class banana implements fruit{ @override //重写get方法 public void get(){ system.out.println("采集香蕉"); } }
public class mainclass{ public static void main(string[] args){ /** * 多态的实例化方式 */ fruit apple = fruitfactory.getapple(); fruit banana = fruitfactory.getbanana(); apple.get(); banana.get(); } }
public class fruitfactory { /** * 获得apple类的实例 */ public static fruit getapple(){ return new apple(); } /** * 获得banana类的实例 */ public static fruit getbanana(){ return new banana(); } }
public interface fruit { public void get(); }
public class apple implements fruit{ @override //重写get方法 public void get(){ system.out.println("采集苹果"); } }
public class banana implements fruit{ @override //重写get方法 public void get(){ system.out.println("采集香蕉"); } }
public class mainclass{ public static void main(string[] args){ /** * 通过工厂类的静态方法实例化 */ fruit apple = fruitfactory.getapple(); fruit banana = fruitfactory.getbanana(); apple.get(); banana.get(); } }
public class fruitfactory { public static fruit getfruit(string type) throws illegalaccessexception, classnotfoundexception, instantiationexception { /** * 对参数的判断并返回实例 */ if (type.equalsignorecase("apple")){ return apple.class.newinstance(); } else if (type.equalsignorecase("banana")){ return banana.class.newinstance(); } else { system.out.println("找不到相应的实例化类"); return null; } } }
public interface fruit { public void get(); }
public class apple implements fruit{ @override public void get(){ system.out.println("采集苹果"); } }
public class banana implements fruit{ @override public void get(){ system.out.println("采集香蕉"); } }
public class mainclass{ public static void main(string[] args) throws illegalaccessexception, classnotfoundexception, instantiationexception { fruit apple = fruitfactory.getfruit("apple"); fruit banana = fruitfactory.getfruit("banana"); apple.get(); banana.get(); } }
public class fruitfactory { public static fruit getfruit(string type) throws illegalaccessexception, classnotfoundexception, instantiationexception { class fruit = class.forname(type); return (fruit)fruit.newinstance(); } }
public interface fruit { public void get(); }
public class apple implements fruit{ @override public void get(){ system.out.println("采集苹果"); } }
public class banana implements fruit{ @override public void get(){ system.out.println("采集香蕉"); } }
public class mainclass{ public static void main(string[] args) throws illegalaccessexception, classnotfoundexception, instantiationexception { fruit apple = fruitfactory.getfruit("apple"); fruit banana = fruitfactory.getfruit("banana"); apple.get(); banana.get(); } }
如对本文有疑问, 点击进行留言回复!!
网友评论