工厂模式(二)--工厂方法模式
来源:互联网 发布:电梯仿真软件 编辑:程序博客网 时间:2024/05/09 18:07
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法就是让类把实例化推迟到子类。
工厂方法模式与简单工厂模式的区别:
两者都实现了类的实例化与类的行为之间的解耦。如果需要添加需求,对于简单工厂来说需要修改工厂中的代码。未遵循开闭原则(对拓展开放,对修改关闭),工厂方法模式只需要写个类实现工厂接口,遵循开闭原则。
类图:
场景:
手机实例化(Phone)是需要手机工厂(PhoneFactory)来生产的,手机(Phone)需要有打电话(call())的功能,实现一个ICall接口。现在有2款手机,一款iPhone,一款小米,现在让我们用工厂方法模式怎么实现代码
手机(Phone)需要打电话功能,需要实现ICall接口
public interface ICall { void call();}
public abstract class Phone implements ICall {}
手机工厂(PhoneFactory),创建手机(createPhone() 返回手机实例(Phone))
public interface PhoneFactory { Phone createPhone();}
现在有2款手机:iPhone和小米
public class IPhone extends Phone { @Override public void call() { Log.e("zhang", "我用iPhone手机打电话"); }}public class XiaoMiPhone extends Phone { @Override public void call() { Log.e("zhang", "我用小米手机打电话"); }}
我们现在需要创建2个工厂去生产手机了
public class IPhoneFactory implements PhoneFactory { @Override public Phone createPhone() { return new IPhone(); }}public class XiaoMiFactory implements PhoneFactory{ @Override public Phone createPhone() { return new XiaoMiPhone(); }}
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new IPhoneFactory().createPhone().call(); new XiaoMiFactory().createPhone().call(); }}
0 0
- 工厂模式(二)--工厂方法模式
- 工厂模式(简单工厂模式, 工厂方法模式, 抽象工厂模式)二
- 设计模式(二)工厂方法模式+抽象工厂模式
- [设计模式](二):工厂模式(简单工厂|静态工程、工厂方法|多工厂、抽象工厂)
- 二、工厂方法模式
- (二)工厂方法模式
- 二 工厂方法模式
- 二、工厂方法模式
- 工厂方法模式(二):工厂方法模式概述
- 工厂模式二 工厂方法模式
- 模式二(工厂方法模式)
- 设计模式(二)---工厂方法模式
- 设计模式(二)工厂方法模式
- 设计模式(二)--工厂方法模式
- 工厂设计模式(二)--工厂方法模式
- 工厂模式(二)-工厂方法模式(C++实现)
- 设计模式学习(二)之工厂模式(简单工厂+工厂方法+抽象工厂)
- 工厂模式(简单工厂、工厂方法)
- 大白书 第三页
- log4j使用说明
- pymysql 插入数据 转义处理
- You need to use a Theme.AppCompat theme (or descendant) with this activity解决方法
- C/C++的字符串操作(二)
- 工厂模式(二)--工厂方法模式
- JAVA中的GC机制
- sed-非交互式流编辑器详解
- redis事务管理
- opencv1.0
- 详谈android启动模式
- 加/解密系列(二)-前端加密md5实现--CryptoJS v3.1.2+
- 线程池系列一:线程池作用及Executors方法讲解
- rsync 的简单使用