一。基本的面向对象原则:封装,多态,针对接口。
二。策略模式:
abstact class duck{
private Flyber flyber;
private Quacker quacker;
private Higter highter;
public void display()
{
System.out.println("重量:"+heiht);
}
public void fly()
{
flyber.fly();
}
pulibc void quaker()
{
quacker.quacker();
}
.....get set 方法。
}
public interface Flyber{
public quacker();
}
然后有一个实现此接口的飞翔的类,
一个鸭子类继承duck类,它会飞,会叫,那么就把实现flyber,quacker接口会飞会叫的
行为类,赋于鸭子类的成员变量。
这样鸭子类 的不变的部分写在主抽象类中,变化的部分写在其成员变量中,
好处:若都是继承得来,主类实现飞和叫,若子类不会飞和叫,那每继承一个就要修改飞和叫。
若把会叫和飞写成接口,主类实现接口,这样若子类中有一样的会飞和会叫这样更新和新加都要重复写,这样代码不能复用。
所以把变化的部分写成实现接口的行为类,组合在主类中,这样避免了上面的情况的发生。
三:观察者:
interface subject
{
regiterObercts();
removeObercts();
notesObercts();
}
interface Oberct
{
public update(传输对象);
}
这样实现
Oberct1 implements Oberct
{
Oberct1( subject)
{
subject.regiterObercts(this);
}
public update(传输对象)
{
要传输的对象获得,然后显示。
}
}
subject implements subject
{
private List list;
regiterObercts(object){
list.add(object);
}
removeObercts()
{
list.remove(object);
}
notesObercts(
for()
{
list.get(i).update(传输对象);
}
);
java内置观察者:java.until.Observable Observer
但是Observable 是类,不是接口,有好有坏。
三装饰者模式:
一个抽象的主件:可为抽象类或接口
下面分为:两种
一主类 二位装饰者
注意这三个必须是同一种类型。
装饰者模式:实现3个组件
一个抽象的组件,一个抽象的装饰者的组件, 一个具体的组件,一个具体的装饰者组件
装饰者模式:所有的组件必须都是实现统一的接口.
其中实现的继承是为了使所有的组件都属于统一的类型,而不是继承主件的行为。而是通过组合来实现行为的改变。
javaIO模型就是实现了装饰者模式。
inputStream 为抽象的组件,FileInputStream 为抽象的组件。LineNumberInputStream ,BufferedInputStream为装饰者的具体类。
那抽象的装饰者组件是哪个类呢。
OK
四:工厂模式:
1.简单工厂:
如果在客户端得到一个实例,都要NEW一个对象的话,这样就是针对具体的实现类来编成,这样以后要是改变的话,就要修改客户端的代码.这样把对象的创建放到另外一个类中去创建.就构成了简单工厂,
public class PizzsStore{
Pizza OrderPizza(String type)
{
pizza= simplePizzaFactory.createPizza(type);
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
}
2.工厂方法:
但是如果把基类创建成一个抽象类,创建对象在类中只是个抽象的方法,要具体的子类去实现对象的创建.这样就构成了工厂方法.
3.如果把创建对象所用的原料,在用原料工厂来完成,那么不同的店面,要不同的PIZZA对象,这样在创建一个原料工厂,又有不同的子类去实现原料工厂,这样创建对象的时候,把具体的工厂传入,来创建自己的pizza对象。
这样构成了抽象工厂,抽象工厂用到了工厂方法来创建自己的具体类。
抽象物品及具体物品:
public abstract class Pizza{
String name;
Dough dough;
Sauce sauce;
.....
void baake(){System.out.println(" bake for 25 minutes at 350");}
void cut(){}
}
public class CheesePizza extends Pizza{
PizzaIngredientFactory ingredientFactory;
public CheesePizza(PizzaIngredientFactory facotry)
{
this.factory=facotry;
}
void prepare()
{
this.dough=ingredientFactory.createDough();
this.sauce=facotry.createSauce();
}
}
具体店面:
public class NyPizzaStore Extends PizzaStore{
protected Pizza createPizza(String item)
{
Pizza pizza=null;
PizzaIngredientFactory =new NyPizzaIngredIentFactory();
if(item.equasl("cheese"))
{
pizza=new CheesePizza(factory);
}else if( ){
}else if( ){
}
}
}
抽象的店面
public abstract class PizzaStore{
public Pizza orderPizza(String type){
Pizza pizza;
pizza=createPizza(type);
pizza.prpare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
protected abstract Pizza createPiizza(String type);
}
四:单例模式
当类的构造方法为私有的时候,就不能从外部或者子类来创建实例,这时候就应该从类的内部来创建实例,所以类的必须有个公共的静态方法,来提供实例.
初始化时就创建实例:
/**
* @author handw
* @date 2009-12-12 下午01:46:52
* @infomation:单例
*/
public class Singtons {
private static Singtons sington=new Singtons();
/**
* 私有构造方法
*/
private Singtons()
{
}
/**
*
* @author handw
* @date 2009-12-12 下午01:48:12
* @infomation:静态的方法
* @return
*/
public static Singtons getSingtonIntance()
{
return sington;
}
}
在获取实例的时候创建实例:
package maintest;
/**
* @author handw
* @date 2009-12-12 下午03:07:06
* @infomation:单例
*/
public class Sington {
private static Sington sington;
private String QueryCarSQL="select * from mg_car";
private String QueryStationSQL="select * from mg_car";
/**
* 私有构造方法
*/
private Sington()
{
}
/**
* 返回实例
* @author handw
* @date 2009-12-12 下午03:08:11
* @infomation:
* @return
*/
public static Sington getSingtonIntance()
{
if(sington==null)
{
synchronized (Sington.class) {//---比同步一个变量的作用范围大,它相当于同步静态方法
if(sington==null)
{
sington=new Sington();
} }
}
return sington;
}
public String getPublicQueryCar()
{
return "select * from mg_car";
}
/**
* 外部不可用
* @author handw
* @date 2009-12-12 下午03:43:21
* @infomation:
* @return
*/
private String getPrivateQueryCar()
{
return "select * from mg_car";
}
/**
*
* @author handw
* @date 2009-12-12 下午03:43:42
* @infomation:同一个包中,子类,内部可用
* @return
*/
protected String getProtectedQueryCar()
{
return "select * from mg_car";
}
/**
*
* @author handw
* @date 2009-12-12 下午03:46:08
* @infomation:友好权限
* @return
*/
String getFriendly()
{
return "select * from mg_car";
}
}
也个同步获得实例的静态方法,但是性能不好,不如同步块,只是在第一次创建的时候同步块才运行一次。
分享到:
相关推荐
Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式...
Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现...
1. word文档记录了Struts2+Hibernate3+Spring2.5整合详细步骤,附有操作步骤的图示参考,并给出了各个步骤的注意事项; 2. 源代码实例包括一个完整模块的增删改查操作,可直接运行,可以在此基础上直接进行自己系统...
本文将详细介绍如何通过拆后盖并进行9008短接的方式来进入救砖模式,以解决小米8SE的故障问题。 首先,我们要理解什么是9008模式。9008模式是高通处理器设备的一个特殊恢复模式,也被称为QFIL模式或Download Mode。...
在笔记本应用中,其中内部扬声器驱动为BTL,而线输出(通常是耳机驱动)需要是SE时,TPA0242会自动切换到SE模式,有效减少了6 dB的增益。 TPA0242在正常操作期间仅消耗20 mA的供电电流。在shutdown模式下,供电电流...
在对化学浸金表面处理的PCB样品进行成像时,不同的SE模式也会展现出不同的表面形貌和成分信息。低加速电压下的反射电子(BSE)信号也可以由In-lens二次电子探测器检测到,其信号分为BSE-L和BSE-H,BSE-L和BSE-H分别指...
- **必填参数**:需提供两个参数,即待处理的FASTQ文件,如果仅提供这两个参数,程序默认为SE模式,且默认拆分最后一段10bp的barcode,容错率为1。 - **-2**:表示双端测序模式,需要提供两个FASTQ文件。 - **-o**:...
SE 模式用于耳机输出,而 BTL 模式用于喇叭输出。这使得该芯片可以适应不同的应用场景。 知识点 6:音频信号输入 TI-TPA6013A4PWPG4 具有音频信号输入接口,允许用户输入立体声音频信号。这使得该芯片可以驱动立体...
2. **两种输出模式**:通过SE/BTL输入控制引脚信号,可以选择BTL或SE模式。BTL模式适用于扬声器驱动,可以提供每声道2.6W的输出功率;SE模式则用于耳机驱动。 3. **低待机电流**:在关机模式下,电流消耗仅为1mA,...
5. 音频系统设计:PA3312 结合了 BTL 模式和 SE 模式,简化了音频系统的设计,用户可以轻松地在两种模式之间切换。 6. 低工作电流:PA3312 的工作电流为 10mA,满足低功耗应用的需求。 7. 兼容PC99 桌面线路输出:...
在笔记本电脑应用中,TPA0312可以根据需要自动切换到SE模式。当SE/BTL输入被激活时,它将降低增益至4.1分贝,使得内部扬声器以桥接方式驱动,同时线性输出(如耳机驱动)保持单端模式。这种灵活的设计使得该器件在...
内部输入多路复用器的加入,更是允许了两组立体声音频输入的独立选择,无论放大器处于BTL模式还是SE模式。这样的设计灵活性意味着用户可以根据不同场合的需求,切换不同的音频输入,为用户提供了极大的方便。 考虑...
5. **电源管理**:由于se8r01同样关注低功耗,因此可能包含节能模式,如空闲模式、休眠模式等,开发者需要适时切换以节省电池。 6. **抗干扰能力**:在2.4GHz频段,存在许多其他无线设备,如Wi-Fi、蓝牙等,se8r01...
转换过程可能会涉及到图像的大小调整、分辨率设置、颜色模式转换等步骤,以确保在电路设计软件中显示正常且不影响性能。 使用这个工具的具体步骤大致如下: 1. 下载并安装“Protel99se添加图片工具”(btp.exe)。...
5. **笔记本应用优化**:在笔记本电脑等应用中,当SE/BTL输入激活时,TPA0232会自动切换到SE模式,这在驱动内部BTL扬声器的同时,保持耳机驱动的单端输出,降低了增益6 dB。 6. **低功耗设计**:正常工作时,TPA...
支持单端(SE)和桥接(BTL)两种模式,BTL模式下的音量控制范围为-34分贝到20分贝,SE模式下降低6分贝。 11. **增益总和**: 总放大器增益由输入至扬声器的音量控制阶段和缓冲阶段的增益之和决定,通过BUFFGAIN...
3. **多选与框选**:鼠标插件可能支持多选模式,用户可以通过框选或连续点击来选取多个元件,方便批量操作。 4. **拖放式放置**:对于元件放置,鼠标插件可能会提供更流畅的拖放功能,使得元件布局更为便捷。 5. *...
* 最大音量设置,用于 SE 模式 * 3W 输出功率,适用于 3Ω 负载 * MUX 立体声输入 3. 应用场景:PA3011 芯片广泛应用于笔记本电脑、液晶显示器和掌上电脑等设备。 4. 封装信息:PA3011 芯片采用 HTSSOP-24 封装...
在 802.11b 模式下可达到 29dBm(ACPR)。 3. **集成化设计**:集成了 PA、输入匹配电路以及 2.8V 参考电压发生器。 4. **温度补偿功率检测器**:具有超过 20dB 的动态范围,在天线处 3:1 不匹配条件下变化小于 1.2...