AbstractFactoryPattern(23种设计模式之一)
设计模式六大原则(1):单一职责原则
设计模式六大原则(2):里氏替换原则
设计模式六大原则(3):依赖倒置原则
设计模式六大原则(4):接口隔离原则
设计模式六大原则(5):迪米特法则
设计模式六大原则(6):开闭原则
AbstractFactoryPattern,UML抽象图百度找,代码实现如下
使用抽象工厂模式设计一个可以创建1型产品和2型产品。
抽象产品类
package AbstractFactoryPattern;
public interface IProduct1 {
public void show();
}
package AbstractFactoryPattern;
public interface IProduct2 {
public void show();
}
具体产品类
package AbstractFactoryPattern.ConcreteProduct;
import AbstractFactoryPattern.IProduct1;
public class Product1 implements IProduct1 {
public void show() {
System.out.println("这是1型产品");
}
}
package AbstractFactoryPattern.ConcreteProduct;
import AbstractFactoryPattern.IProduct2;
public class Product2 implements IProduct2 {
public void show() {
System.out.println("这是2型产品");
}
}
抽象工厂类
package AbstractFactoryPattern;
public interface IFactory {
public IProduct1 createProduct1();
public IProduct2 createProduct2();
}
具体工厂类
package AbstractFactoryPattern.ConcreteFactory;
import AbstractFactoryPattern.IFactory;
import AbstractFactoryPattern.IProduct1;
import AbstractFactoryPattern.IProduct2;
import AbstractFactoryPattern.ConcreteProduct.Product1;
import AbstractFactoryPattern.ConcreteProduct.Product2;
public class Factory implements IFactory {
public IProduct1 createProduct1() {
return new Product1();
}
public IProduct2 createProduct2() {
return new Product2();
}
}
测试类
package AbstractFactoryPattern;
import AbstractFactoryPattern.ConcreteFactory.Factory;
public class Test {
public static void main(String[] args) {
IFactory factory = new Factory();
factory.createProduct1().show();
factory.createProduct2().show();
}
}
别嫌弃我没写注释,这个代码很简单,注释省略,嘿嘿。
AbstractFactoryPattern(23种设计模式之一)的更多相关文章
- Java开发中的23种设计模式详解
[放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...
- Java开发中的23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- Java开发中的23种设计模式(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- c#中的23种设计模式
C# 23种设计模式汇总 创建型模式 工厂方法(Factory Method) 在工厂方法模式中,工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节.工厂方法模式的核 ...
- Java 23种设计模式
转自: http://zz563143188.iteye.com/blog/1847029 ; i<count; i++){ list.add(new MailSender()); } } pu ...
- 从追MM谈Java的23种设计模式(转)
从追MM谈Java的23种设计模式 这个是从某个文章转载过来的.但是忘了原文链接.如果知道的,我追加一下. 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西 ...
- java 23种设计模式及具体例子 收藏有时间慢慢看
设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代 码可靠性. 毫无疑问,设计模式 ...
- JAVA:23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- 从追MM谈Java的23种设计模式
从追MM谈Java的23种设计模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯 德基,只管向服务员说“来四个鸡 ...
- 23种设计模式全解析 (java版本)
转自:http://blog.csdn.net/longyulu/article/details/9159589 其中PHP常用的五种设计模式分别为:工厂模式,单例模式,观察者模式,策略模式,命令模式 ...
随机推荐
- Java匿名对象和匿名类总结
一.匿名对象 匿名对象是没有名字的实体,也就是该实体没有对应的变量名引用 匿名对象的特征: 创建的匿名类的对象只能够调用一次 匿名对象只在堆内存中开辟空间 ...
- GEF入门实例_总结_02_新建初始RCP空项目
一.前言 本节承接上一节: GEF入门实例_总结_01_教程.源码.开发环境准备 这一节我们来创建一个空的RCP项目. 二.新建RCP项目 1. New 一个 Plug-in Project 2.输入 ...
- Solr单机版安装
感谢 shliuzw 的分享,原文地址http://blog.csdn.net/liuzhenwen/article/details/4060922 感谢 upxiaofeng 的分享,原文地址 ht ...
- nyoj-1099-Lan Xiang's Square(几何,水题)
题目链接 /* Name:nyoj-1099-Lan Xiang's Square Copyright: Author: Date: 2018/4/26 9:19:19 Description: 给4 ...
- New Concept English three (54)
打字练习: 27w/m 45errors We have been brought up to fear insects. We regard them as unnecessary creature ...
- Python修复图像文件后缀名
网上爬了很多图片,有很多错误. 有的不是图片文件,需要删除 有的后缀名错误,需要更正 用的的python脚本 #!/usr/bin/env python #-*- coding: utf-8 -*-# ...
- MSSQL Join的使用
假设我们有下面两张表.表A在左边,表B在右边.我们给它们各四条记录. id name id name -- ---- -- ---- 1 Pirate 1 Rutabaga 2 Monkey 2 Pi ...
- java代码继承疑惑,请有心人解答
总结:这段程序没有问题,编译运行都是可以的.关键是,子类的无参构造方法第一句少了super(a,b);运行后,显示了双重结果 .还有.如果子类中没有声明成员变量String name.那么结果显示父 ...
- web基础 (四) JavaScript基础
JavaScript 简史略过…… 一.Javascript结构 ECMAScript ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标 ...
- List转Datable(需区分对象充当List成员和数组充当List成员两种情况)
对象充当List成员时: /// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name ...