工厂模式(三)--抽象工厂模式
来源:互联网 发布:天津外国语大学 知乎 编辑:程序博客网 时间:2024/05/01 06:43
抽象工厂模式:当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。
抽象工厂模式与工厂方法模式的区别:
工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结构。
类图:
场景:现在有2个产品,手机(Phone)和平板(Pad),我们需要一个工厂(IFactory)生产2中产品,现在有2个品牌小米,苹果都做这产品,并且有着自己的工厂。
代码:
产品的基类与实现的接口
public interface ICall { void call();}public abstract class Phone implements ICall {}public interface IPlay { void play();}public abstract class Pad implements IPlay {}
抽象工厂:
public interface IFactory { Phone createPhone(); Pad createPad();}
小米产品:
public class XiaoMiPhone extends Phone { @Override public void call() { Log.e("zhang", "用小米手机打电话" ); }}public class XiaoMiPad extends Pad { @Override public void play() { Log.e("zhang", "用小米平板玩游戏" ); }}
小米的工厂:
public class XiaoMiFactory implements IFactory { @Override public Phone createPhone() { return new XiaoMiPhone(); } @Override public Pad createPad() { return new XiaoMiPad(); }}
苹果的产品
public class IPhone extends Phone { @Override public void call() { Log.e("zhang", "用iPhone打电话" ); }}public class IPad extends Pad { @Override public void play() { Log.e("zhang", "用iPad玩游戏" ); }}
苹果的工厂:
public class AppleFactory implements IFactory { @Override public Phone createPhone() { return new IPhone(); } @Override public Pad createPad() { return new IPad(); }}
程序入口:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IFactory factory = new XiaoMiFactory(); operate(factory); factory = new AppleFactory(); operate(factory); } public void operate(IFactory factory) { Phone phone = factory.createPhone(); phone.call(); Pad pad = factory.createPad(); pad.play(); }}
0 0
- 工厂模式(三)--抽象工厂模式
- 抽象工厂模式(三)
- (三)抽象工厂模式
- 三、抽象工厂模式
- (三)抽象工厂模式
- 三 抽象工厂模式
- 抽象工厂模式(三):抽象工厂模式概述
- 工厂模式(简单工厂模式, 工厂方法模式, 抽象工厂模式)三
- 工厂模式三 抽象工厂模式
- 设计模式(三)---抽象工厂模式
- 设计模式(三)--抽象工厂模式
- 设计模式(三)---抽象工厂模式
- 设计模式(三)抽象工厂模式
- 模式三(抽象工厂模式)
- 工厂模式(三)-抽象工厂模式(C++实现)
- 细说工厂模式之抽象工厂模式(三)
- 工厂设计模式(三)--抽象工厂模式
- 抽象工厂模式-Abstract Factory Pattern 工厂三兄弟之抽象工厂模式(三):抽象工厂模式概述
- 学习总结:Activity生命周期
- OSX PHP添加intl支持
- 解决虚拟机上的tomcat无法被主机访问的问题
- Dockerfile最佳实践(一)
- Python和shell中Base64编码使用那些事
- 工厂模式(三)--抽象工厂模式
- 纹理特征LBP(local binary pattern,局部二值模式)
- SSH框架从底层数据库到jsp页面响应流程及注意事项
- 一个简单的智能指针的实现
- 字符串函数
- 将url或者字符串转换成MD5格式(md5加密算法)的写法
- Swift 2.2 基础语法
- Problem C
- kafka_2.9.2-0.8.1.1安装、测试、集群