OOAD理论知识小结
软件工程基本概念
软件工程三要素:
不同的软件开发方法和软件开发模型要求有不同的工程体系。

六)接口隔离原则
工厂方法模式(Factory Method); 抽象工厂模式(Abstract Factory);创建者模式(Builder);原型模式(Prototype);单例模式(Singleton)。
外观模式(Facade);适配器模式(Adapter);代理模式(Proxy);装饰模式(Decorator);桥模式(Bridge);组合模式(Composite);享元模式(Flyweight)。
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,注意这是private
//预加载
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,
//可以直接访问
public static Singleton getInstance() {
return instance;
}
}
使用单例模式(2)
public class Singleton {
private Singleton (){}
//延迟加载
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成
//对象,只是第一次使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance;
}
}
//这种方式在多线程的情况下,由于每次获取实例的时候都要对//getInstance()方法加锁,获取锁才能运行,效率会受影响。
使用单例模式(3)
//双锁机制:
public class Singleton {
private Singleton (){}
private static Singleton instance = null;
public static Singleton getInstance(){
if (instance==null)
synchronized(Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
return instance;
}
}
//这种方式只是在初始化Singleton那部分代码的时候添加同步锁,这样提高了//效率。
原型模式(Prototype)
/**
* 浅克隆
* @return
* @throws CloneNotSupportedException
*/
public Player qianClone() throws CloneNotSupportedException{
return (Player) super.clone();
}
/**
* 深克隆
* @return
* @throws IOException
* @throws ClassNotFoundException
*/
public Player deepClone() throws IOException, ClassNotFoundException{
ByteArrayOutputStream bos=new ByteArrayOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(bos);
oos.writeObject(this); ByteArrayInputStream bis=new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois=new ObjectInputStream(bis);
Player p=(Player) ois.readObject();
return p; }
创建者模式(Builder)
定义一个算法的骨架,而将一些实现步骤延迟到子类中。把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。
策略(Strategy )模式


MVC模式
DAO 模式有两个主要作用:
1、抽象数据源
2、抽象相关的 CRUD 逻辑(增删改查)

OOAD理论知识小结的更多相关文章
- 【HTTP缓存】浏览器缓存理论知识
时间:2016-12-12 17:51:30 作者: zhongxia 零.前言 这里主要写的是理论,具体实践的比较少,后期写一个实践教程,内容基本都是从参考文章里面抄过来的[看完文章,顺便写做下笔记 ...
- js中函数的一些理论知识
函数的一些理论知识 1. 函数: 执行一个明确的动作并提供一个返回值的独立代码块.同时函数也是javascript中的一级公民(就是函数和其它变量一样). 2.函数的 ...
- Android app开发知识小结
Android知识小结 这是一个知识的总结,所以没有详解的讲解. 一.分辨率Android中dp长度.sp字体使用.px像素.in英寸.pt英寸1/72.mm毫米 了解dp首先要知道density,d ...
- 用VC进行COM编程所必须掌握的理论知识
一.为什么要用COM 软件工程发展到今天,从一开始的结构化编程,到面向对象编程,再到现在的COM编程,目标只有一个,就是希望软件能象积方块一样是累起来的,是组装起来的,而不是一点点编出来的.结构化编程 ...
- 图形学理论知识 BRDF 双向反射分布函数(Bidirectional Reflectance Distribution Function)
图形学理论知识 BRDF 双向反射分布函数 Bidirectional Reflectance Distribution Function BRDF理论 BRDF表示的是双向反射分布函数(Bidire ...
- TestNG学习-001-基础理论知识
此 文主要讲述用 TestNG 的基础理论知识,TestNG 的特定,编写测试过程三步骤,与 JUnit4+ 的差异,以此使亲对 TestNG 测试框架能够有一个简单的认知. 希望能对初学 TestN ...
- C/C++ 位域知识小结
C/C++ 位域知识小结 几篇较全面的位域相关的文章: http://www.uplook.cn/blog/9/93362/ C/C++位域(Bit-fields)之我见 C中的位域与大小端问题 内存 ...
- [转] DDD领域驱动设计(三) 之 理论知识收集汇总
最近一直在学习领域驱动设计(DDD)的理论知识,从网上搜集了一些个人认为比较有价值的东西,贴出来和大家分享一下: 我一直觉得不要盲目相信权威,比如不能一谈起领域驱动设计,就一定认为国外的那个Eric ...
- Winsock网络编程笔记(4)----基本的理论知识
前面的笔记记录了Winsock的入门编程,领略了Winsock编程的乐趣..但这并不能算是掌握了Winsock,加深理论知识的理解才会让后续学习更加得心应手..因此,这篇笔记将记录一些有关Winsoc ...
随机推荐
- axios基础
一.安装 <script src="https://unpkg.com/axios/dist/axios.min.js"></script> npm ins ...
- js-选项卡套选项卡
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- PostgresSQL使用Copy命令能大大提高数据导入速度
最近在做会员系统,其中会员系统有一份企业信息初始化的数据,需要从SQL Server数据库导入到PostgreSQL,单表的数据近30万.最开始的方案是在SQL Server上生成insert int ...
- 利用GDI+处理图像的色彩
首先先介绍一下ColorMatrix结构体:表示颜色的变换关系,定义如下: typedef struct { REAL m[][]; } ColorMatrix; ColorMatrix结构体一般和I ...
- Google guava cache源码解析1--构建缓存器(1)
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1.guava cache 当下最常用最简单的本地缓存 线程安全的本地缓存 类似于ConcurrentHas ...
- 【有新题】OCP 12c 062出现大量新考题-14
choose two You plan to upgrade your Oracle Database 9i to Oracle Database 12c. Which two methods can ...
- ADB 命令介绍
Android adb shell am 命令介绍 am这个指令是 activity manager的缩写.这个命令可以启动Activity.打开或关闭进程.发送广播等操作. am命令格式如下 adb ...
- 前端基础-html 列表标签,表格标签,表单标签
一.列表标签 1.ul(无序列表)标签 ul(unordered list)无序列表,ul下的子元素只能是li(list item),如下示例: <ul> <li>第一项< ...
- [JavaScript] 跳出循环方法总结
1.forEach() 方法对数组的每个元素执行一次提供的函数.但是没有办法中止或者跳出 forEach 循环,除了抛出一个异常,该方法没有返回值,return/return false/return ...
- Unity MVC 个人想法
Unity MVC 个人想法 Model 想要实现效果 保存服务器数据 没有业务逻辑 接受发送消息 代码实现 缓存服务器发来的数据 注册消息接口 提供消息发送接口 View 想要实现效果 实现单元测试 ...