设计模式-简单工厂模式

来源:互联网 发布:普通人如何投资 知乎 编辑:程序博客网 时间:2024/06/06 11:36

场景

工厂模式是根据不同的参数创建对象。解决耦合的问题,工厂作为一个中间件存在。Spring中IOC是工厂模式的一种实现。工厂方法是由子类自行决定实例化那个类,而抽象工厂是自己决定实例化哪个类。缺点增加一种实现就需要修改一次FootballerFactory 建议使用抽象工厂 

Sample

Factory 加入了单例
package com.lohamce.dp.samples.factory;public interface FootballPlayer {void shoot();void pass();void defend();}
package com.lohamce.dp.samples.factory;public class Chinese implements FootballPlayer {@Overridepublic void shoot() {System.out.println("Missed");}@Overridepublic void pass() {System.out.println("Missed");}@Overridepublic void defend() {System.out.println("Missed");}}
package com.lohamce.dp.samples.factory;public class Japanese implements FootballPlayer {@Overridepublic void shoot() {System.out.println("Good");}@Overridepublic void pass() {System.out.println("Perfect");}@Overridepublic void defend() {System.out.println("Missed");}}

package com.lohamce.dp.samples.factory;public class FootballPlayerFactory {public static final int CHINA = 1;public static final int JAPAN = 2;private FootballPlayerFactory(){}private static final FootballPlayerFactory footballPlayerFactory = new FootballPlayerFactory();public static FootballPlayerFactory getInstance(){return footballPlayerFactory;}FootballPlayer createFootballPlayer(int nationality){FootballPlayer player = null;switch(nationality) {case CHINA:player = new Chinese();break;case JAPAN:player = new Japanese();break;}return player;}}

package com.lohamce.dp.samples.factory;public class Test {public static void main(String[] args) {FootballPlayer player = FootballPlayerFactory.getInstance().createFootballPlayer(FootballPlayerFactory.JAPAN);player.pass();}}

Reference

java.util.Calendar – getInstance()java.util.Calendar – getInstance(TimeZone zone)java.util.Calendar – getInstance(Locale aLocale)java.util.Calendar – getInstance(TimeZone zone, Locale aLocale) java.text.NumberFormat – getInstance()java.text.NumberFormat – getInstance(Locale inLocale)


0 0
原创粉丝点击