Android学习之设计模式之工厂模式

来源:互联网 发布:淘宝怎么设置登录验证 编辑:程序博客网 时间:2024/06/10 00:47

今天来写下工厂模式。

什么是工厂模式呢?举个栗子,例如要实现分享功能,是使用微博SDK来进行分享还是微信SDK还是其他SDK来进行分享呢?万一老板要求只能使用其中之一来分享呢?在大家不知道哪种方式最好的时候可以使用工厂模式,我两个都设计好,代码设个开关,哪个用的不爽了就换另一个,直到老板满意为止。

这里并不实现真正的分享和SDK集成,写个例子来展现一下什么是工厂模式:

先写个接口来抽取微博和微信常用的方法:

/** * 分享接口 * * @author yuzhentao */public interface ShareListener {    /**     * 分享     */    void share();}
有了这个接口,微博和微信就能通过实现它来分别满足调用者的需求:
/** * 微博 * * @author yuzhentao */public class Weibo implements ShareListener {    @Override    public void share() {        Log.e("yuzhentao", "分享到微博");    }}
/** * 微信 * * @author yuzhentao */public class Weixin implements ShareListener {    @Override    public void share() {        Log.e("yuzhentao", "分享到微信");    }}
然后是工厂类,通过静态方法getInstance来调用微博或者微信分享:
/** * 分享工厂 * * @author yuzhentao */public class ShareFactory {    public static ShareListener getInstance(String name) {        if (name.equals("Weixin")) {            return new Weixin();        } else if (name.equals("Weibo")) {            return new Weibo();        }        return new Weixin();    }}
最后是主界面,这样对于调用者来说只要关心调用的是微博还是微信分享即可,想用哪个直接切换即可:
/** * 主界面 * * @author yuzhentao */public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ShareListener shareListener = ShareFactory.getInstance("Weixin");        shareListener.share();    }}

例子很简单,当然本人理解也不是很深,这里就简单写下自己的想法。

希望对大家有所帮助。

Demo地址:http://download.csdn.net/detail/qq_23940659/9481492

1 0
原创粉丝点击