java设计模式 (1) 工厂模式,抽象工厂模式,单子模式

来源:互联网 发布:中建七局网络教育平台 编辑:程序博客网 时间:2024/04/29 02:56

《一》 工厂模式


工厂模式就是实例化对象,用工厂方法代替new操作的一种模式,会给你系统带来更大的可扩展性和尽量少的修改量。

Car.java
//创建接口
public interface Car {
public void Price();
public void race();
}

bmw.java
//接口实现
public class bmw implements Car {
@Override
public void Price() {
// TODO Auto-generated method stub
System.out.println(“100万元”);
}
@Override
public void race() {
// TODO Auto-generated method stub
System.out.println(“最高时速300km/h”);
}
}

Volkswagen.java
//接口实现
public class Volkswagen implements Car{
@Override
public void Price() {
// TODO Auto-generated method stub
System.out.println(“20万元”);
}
@Override
public void race() {
// TODO Auto-generated method stub
System.out.println(“最高时速150km/h”);
}
}

CarFactory.java
//创建工厂
public class CarFactory {
public Car style(String type){
if(“bmw”.equals(type))
{
return new bmw();
}
else if(“Volkswagen”.equals(type)){
return new Volkswagen();
}
else{
System.out.println(“没有要找的类型”);
return null;
}
}
}

CarTest.java
//测试工厂模式
public class CarTest {

public static void main(String[] args) {    // TODO Auto-generated method stub      CarFactory factory=new CarFactory();  //实例化      Car car=factory.style("bmw");         car.Price();      car.race();      }

}

UML–工厂模式
这里写图片描述


《二》 抽象工厂模式


一个抽象工厂类,可以派生出多个具体工厂类。每个抽象产品类可以派生出多个具体产品类,每个具体工厂类可以创建多个具体产品类。将不变的部分提取出来,将可变的部分留作接口,以达到最大程度上的复用。

//car接口 Car.java
public interface Car {
public void price();
public void race();
}

 bmw.java

public class bmw implements Car {

@Overridepublic void price() {    // TODO Auto-generated method stub    System.out.println("宝马的价格是300万元");}@Overridepublic void race() {    // TODO Auto-generated method stub    System.out.println("宝马的速度可达到300km/h");}

}

             Volkswagen.java

public class Volkswagen implements Car{
@Override
public void price() {
// TODO Auto-generated method stub
System.out.println(“大众的价格是100万元”);
}
@Override
public void race() {
// TODO Auto-generated method stub
System.out.println(“大众的速度为150km/h”);
}
}

  CarFactory.java

//工厂接口
public interface CarFactory {
public Car produce();
}

 OneFactory

public class OneFactory implements CarFactory{
@Override
public Car produce() {
// TODO Auto-generated method stub
return new bmw();
}
}

   TwoFactory

public class TwoFactory implements CarFactory{
@Override
public Car produce() {
// TODO Auto-generated method stub
return new Volkswagen();
}
}

   Test_car 

public class Test_car {
public static void main(String[] args) {
// TODO Auto-generated method stub
CarFactory factory=new OneFactory(); //找到工厂
Car car=factory.produce();
car.pric UML()
car.race();//生产产品

}

}


《三》 单子模式


保证单例类只能有一个实例,而且必须是自己创建自己的唯一实例,必须给所有其他对象提供这一实例。
//创建型模式,只能产生一个实例供外部使用,
public class Single{
private static final Single s=new Single();//私有化
private Single(){}

public static Single getInstance(){    return s;}//定义一个静态方法并返回该类的实例

}

/**懒汉式是在类被主动调用时才会被实例化,
实现了类的延迟加载,此处通过两种方式来实现单例模式,
一种是通过双重校验锁的方式,
另一种是通过静态内部类的方式**/

//双重校验锁
public class Single1 {
private static Single1 s=null;
private Single1(){

 } public static Single1 getInstance(){      if(s==null){          synchronized (Single1.class){              if(s==null){                  s=newSingle1();              }          }                 }        return s;     }

}

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 如果一支股票有好几个庄家怎么办 浦发信用卡查询密码被锁定怎么办 浦发信用卡输错密码被锁定怎么办 浦发手机银行查询密码锁定怎么办 宝宝吃母乳没吃饱就睡着了怎么办 量柱画线不是方屏电脑怎么办 夏天卧室开空调太干了怎么办 健身房锻炼手臂抻的肌肉疼怎么办 人累了可以休息 心累了怎么办 上来两天班感觉不想做了怎么办 休产假的时候公司解散了怎么办 上三天班老板不给结工资怎么办 老师说孩子上课纪律不好我该怎么办 大班的孩子记不住拼音怎么办呢 家长跟孩子沟通出现问题该怎么办? 如果孩子入学分配出现问题该怎么办 2岁多的宝宝喜欢动手打人怎么办 儿童新长出的大门牙像两边撇怎么办 被烫伤了怎么办的活动反思怎么写 生完孩子脸上起蝴蝶斑了怎么办 鼻子部位突然长了晒斑怎么办 我脸上长有日晒斑.该怎么办 做为小领导同事不听你的怎么办 二年级的小孩叫写作业不听怎么办 苹果手机微信出现黑框怎么办 百度网盘下载原画视频会闪退怎么办 已发布的公众号推文段落重复怎么办 谷歌商店找不到方舟手游怎么办 染头发的颜色弄到衣服上怎么办 橡皮把桌面油漆弄掉了怎么办 手机被调成静音不知道放哪了怎么办 金丝熊吃大米吃撑了怎么办 部落有可疑记录被暂时禁封怎么办 鼻子通向嘴那里痒得难受怎么办 小孩上嘴唇中间的连线碰掉了怎么办 秋田犬夏天退毛严重么 怎么办 初中数学基本没学过高中怎么办 老师家纺突然想日语文老师怎么办 微信聊天表情小企鹅不动了怎么办 微信自带小表情不全怎么办 爱奇艺电视果有图像无声音怎么办