博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式--抽象工厂(AbstractFactory)
阅读量:4200 次
发布时间:2019-05-26

本文共 2088 字,大约阅读时间需要 6 分钟。

抽象工厂
概述
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
适用性
1.一个系统要独立于它的产品的创建、组合和表示时。    2.一个系统要由多个产品系列中的一个来配置时。    3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。    4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。
参与者
1.AbstractFactory      声明一个创建抽象产品对象的操作接口。    2.ConcreteFactory      实现创建具体产品对象的操作。    3.AbstractProduct      为一类产品对象声明一个接口。    4.ConcreteProduct      定义一个将被相应的具体工厂创建的产品对象。      实现AbstractProduct接口。    5.Client      仅使用由AbstractFactory和AbstractProduct类声明的接口
Example
AbstractFactory public interface IAnimalFactory {    ICat createCat();	    IDog createDog();}ConcreteFactory public class BlackAnimalFactory implements IAnimalFactory {    public ICat createCat() {        return new BlackCat();    }    public IDog createDog() {        return new BlackDog();    }}public class WhiteAnimalFactory implements IAnimalFactory {    public ICat createCat() {        return new WhiteCat();    }    public IDog createDog() {        return new WhiteDog();    }}AbstractProduct public interface ICat {    void eat();}public interface IDog {    void eat();}ConcreteProduct public class BlackCat implements ICat {    public void eat() {        System.out.println("The black cat is eating!");    }}public class WhiteCat implements ICat {    public void eat() {        System.out.println("The white cat is eating!");    }}public class BlackDog implements IDog {    public void eat() {        System.out.println("The black dog is eating");    }}public class WhiteDog implements IDog {    public void eat() {        System.out.println("The white dog is eating!");    }}Client public static void main(String[] args) {    IAnimalFactory blackAnimalFactory = new BlackAnimalFactory();    ICat blackCat = blackAnimalFactory.createCat();    blackCat.eat();    IDog blackDog = blackAnimalFactory.createDog();    blackDog.eat();        IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory();    ICat whiteCat = whiteAnimalFactory.createCat();    whiteCat.eat();    IDog whiteDog = whiteAnimalFactory.createDog();    whiteDog.eat();}result The black cat is eating!The black dog is eating!The white cat is eating!The white dog is eating!

转载地址:http://hcbli.baihongyu.com/

你可能感兴趣的文章
yii2 php namespace 引入第三方非namespace库文件时候,报错:Class not found 的解决
查看>>
softlayer 端口开放
查看>>
操作1:mongodb安装
查看>>
操作2:mongodb使用语法
查看>>
如何给分类增加一个属性(后台)
查看>>
linux设置环境变量 临时设置 和 永久设置
查看>>
检查网站在世界各地的打开速度
查看>>
jquery 向上(顶部),向下(底部)滑动
查看>>
seo
查看>>
10个出色的NoSQL数据库
查看>>
MySQL: InnoDB 还是 MyISAM?
查看>>
MySQL性能优化的最佳20+条经验
查看>>
SQL语言的组成部分 ddl dcl dml
查看>>
mysql数据库从库同步延迟的问题
查看>>
1.mysql数据库主从复制部署笔记
查看>>
mysql数据库主从同步的问题解决方法
查看>>
mysql 配置 - on xFanxcy.com
查看>>
MySQL数据库高并发优化配置
查看>>
mysql一: 索引优化
查看>>
测试人员,今天再不懂BDD就晚了!
查看>>