设计模式-简单工厂模式

来源:互联网 发布:网络安全法解读—试卷 编辑:程序博客网 时间:2024/05/22 12:27

1.1简单工厂模式
简单工厂模式本身很简单,而且使用在业务比较简单的情况下,简单工厂模式有三种角色组成
A:工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。
B:抽象产品角色:一般是具体产品继承的父类或者实现的接口。
C:具体产品角色:工厂类所创建的类就是此角色的实例。

1.2一个简单的例子
/**     *抽象产品角色:运动员    */    public interface SportsMan{        public void run();        public void jump();    }    /**     *具体产品角色:足球运动员    */    public class FootBallSportsMan implements SportsMan{        public void run(){}        public void jump(){}    }    /**     *具体产品角色:篮球运动员    */    public class BasketBallSportsMan implements SportsMan{        public void run(){}        public void jump(){}    }    /**     *工厂类角色:球员联盟    */    public class SportsManFactory{        private SportsManFactory(){}        public static SportsMan registerFootBallSportsMan(){            return new FootBallSportsMan();        }        public static BasketBallSportsMan registerBasketBallSportsMan(){            return new BasketBallSportsMan();        }    }    /**     *客户端:比如某足球俱乐部为球员注册专业运动员牌照    */    public class ClubCilent{        private SportsMan goalKeeper;//守门员        private SportsMan guard;//后卫        public void test(){            //为守门员向球员联盟注册专业足球运动员牌照            this.goalKeeper = SportsManFactory.registerFootBallSportsMan();            //为后卫            this.guard = SportsManFactory.registerFootBallSportsMan();            this.goalKeeper.run();            this.guard.jump();        }    }
简单工厂的优点和缺点:(1)帮助封装:简单工厂虽然很简单,但是帮我们实现了组件的封装,让组件外部能够真正实现面向接口编程。(2)解耦:通过简单工厂,实现了客户端与具体实现的解耦,如同上面的例子,客户端根本就不知道具体有谁实现以及如何实现的。(3)可能增加客户端的复杂度:如果通过客户端参数来选择具体的实现类,那么就必须让客户端理解参数所代表的具体含义和功能。(4)不方便扩展子工厂
0 0