当前位置: 首页 > news >正文

医院网站建设合同做微商那个网站好

医院网站建设合同,做微商那个网站好,网站制作开发公司,中国电信安徽分公司招聘网站设计模式#xff08;Design pattern#xff09;是一套被反复使用的代码设计经验的总结。使用设计模式的目的是为了可重用代码让代码更容易被他人理解 设计模式的运用#xff0c;有助于代码的维护与拓展。任何模式的出现#xff0c;都是为了解决一些特定的场景的耦合问题Design pattern是一套被反复使用的代码设计经验的总结。使用设计模式的目的是为了可重用代码让代码更容易被他人理解 设计模式的运用有助于代码的维护与拓展。任何模式的出现都是为了解决一些特定的场景的耦合问题以达到对修改封闭对扩展开放的效果。 1、实现Build步骤 1、创建实体类2、创建实体内部build类3、实体内部类返回实体类4、实体类创建内部类构造函数/*** 作者created by meixi* 邮箱15913707499163.com* 日期2018/12/14 11*/ public class PersonBuildertest {private String name;private int idd;public PersonBuildertest(Builder builder) {this.name builder.name;this.idd builder.idd;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getIdd() {return idd;}public void setIdd(int idd) {this.idd idd;}public static class Builder {private String name;private int idd;public Builder name(String namein) {this.name namein;return this;}public Builder idd(int id){this.idd id;return this;}public PersonBuildertest build(){return new PersonBuildertest(this);}} } 使用方法 PersonBuildertest buildertest builder.name(那么).idd(2).build(); Log.i(lgq,builerttttbuildertest.getName()); 12-14 13:45:03.313 21756-21756/? I/lgq: builertttt那么 2、原型模式 实现步骤 1、实现Cloneable接口 2、重写Object的clone方法 3、实现clone方法中的拷贝逻辑 public class Clonetest implements Cloneable{private String name;private int age;public Clonetest(){}public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}Overridepublic Object clone(){Clonetest personnull;try {person(Clonetest)super.clone();person.namethis.name;person.agethis.age;} catch (CloneNotSupportedException e) {e.printStackTrace();}return person;} }使用方法 Clonetest pnew Clonetest(); p.setAge(18); p.setName(张三);Clonetest p1 (Clonetest) p.clone();p1.setName(李四); Log.i(lgq,builerttttp1.getName()....p1.getAge()); 12-14 13:45:03.313 21756-21756/? I/lgq: builertttt李四....18 3、单例模式的实现步骤 1、静态实例 2、私有化构造方法 3、静态获取实例的函数双重null判断synchronize同步处理—— 使用synchronized 进行同步处理并且双重判断是否为null我们看到synchronized (Singleton.class)里面又进行了是否为null的判断这是因为一个线程进入了该代码如果另一个线程在等待这时候前一个线程创建了一个实例出来完毕后另一个线程获得锁进入该同步代码实例已经存在没必要再次创建因此这个判断是否是null还是必须的。 public class Singleton {     private static volatile Singleton instance null; private Singleton(){     }       public static Singleton getInstance() {         if (instance null) {             synchronized (Singleton.class) {                 if (instance null) {                     instance new Singleton();                 }             }         }         return instance;     } } activity管理类 public class ActivityManager { private static volatile ActivityManager instance; private StackActivity mActivityStack new StackActivity(); private ActivityManager(){ } public static ActivityManager getInstance(){ if (instance null) { synchronized (ActivityManager.class) { if (instance null) { instance new ActivityManager(); } } return instance; } public void addActicity(Activity act){ mActivityStack.push(act); } public void removeActivity(Activity act){ mActivityStack.remove(act); } public void killMyProcess(){ int nCount mActivityStack.size(); for (int i nCount - 1; i 0; i--) { Activity activity mActivityStack.get(i); activity.finish(); } mActivityStack.clear(); android.os.Process.killProcess(android.os.Process.myPid()); } } 4、观察者模式 主要三个类 1、 public interface Observer {     void update(int id,String param); } 2、 public interface Subject {       /**      * 注册一个观察者      */     void addObserver(Observer observer);       /**      * 删除一个观察者      *      * return 是否删除成功      */     boolean removeObserver(Observer observer);       /**      * 通知所有的观察者      *      * param id 对应观察者的id      */     void notifyObserver(int id,String param);   } 3、 public class TestObServernotice implements Subject {       private static Subject subject;     private ListObserver observers new ArrayList();       private TestObServernotice() {         // TODO Auto-generated constructor stub     }       public static Subject getInstance() {         if (null subject) {             synchronized (TestObServernotice.class) {                 if (null subject)                     subject new TestObServernotice();             }         }         return subject;     }       Override     public void addObserver(Observer observer) {         // TODO Auto-generated method stub         observers.add(observer);     }       Override     public boolean removeObserver(Observer observer) {         // TODO Auto-generated method stub         return observers.remove(observer);     }       Override     public void notifyObserver(int id,String param) {         // TODO Auto-generated method stub         for (Observer observer : observers) {             observer.update(id,param);         }     } } 观察者中注册Observer如MainActivity中注册 private Observer deleteObserver new Observer() {     Override     public void update(int id,String param) {         tomapte.setText(sssssymdparam);//dosomething     } }; TestObServernotice.getInstance().addObserver(deleteObserver); 同时注意删除观察者 Override protected void onDestroy() {     super.onDestroy();     TestObServernotice.getInstance().removeObserver(deleteObserver);     deleteObserver null;     Log.v(lgq, ......11..onDestroy....); } 调用通知观察者主要在receiver中调用fragmentactivity都可以调用跨界面刷新数据 TestObServernotice.getInstance().notifyObserver(0,bundle.getString(cn.jpush.android.ALERT)); 5、命令模式 实现步骤 1创建命令接受者 //命令接收者Receiver public class Tv {public int currentChannel 0;public void turnOn() {System.out.println(lgqThe televisino is on.);}public void turnOff() {System.out.println(The television is off.);}public void changeChannel(int channel) {this.currentChannel channel;System.out.println(Now TV channel is channel);} } 2定义命令的接口声明执行的方法。 //执行命令的接口 public interface Command {void execute(); }3命令接口实现对象 //开机命令ConcreteCommand获取接受者类实现命令 public class CommandOn implements Command {private Tv myTv;public CommandOn(Tv tv) {myTv tv;}public void execute() {myTv.turnOn();} } 4要求命令对象执行请求通常会持有命令对象 //可以看作是遥控器Invoker public class Control {private Command onCommand, offCommand, changeChannel;public Control(Command on) {onCommand on;}public void turnOn() {onCommand.execute();}// public void turnOff() { // offCommand.execute(); // } // // public void changeChannel() { // changeChannel.execute(); // } } 5组装命令对象和接收者 // 命令接收者ReceiverTv myTv new Tv();// 开机命令ConcreteCommondCommandOn on new CommandOn(myTv);// on.execute();// 命令控制对象Invoker组装接受者命令对象Control control new Control(on);// 开机control.turnOn();
http://www.pierceye.com/news/46767/

相关文章:

  • 免费建设音乐网站o2o分销系统网站建设
  • 如何做一份网站推广方案做电影网站哪个源码好
  • 网站建设和设计wordpress情侣
  • 家具公司网站页面设计模板cdr 做网站
  • 公司网站建设多少费用济南兴田德润评价如何做快递api接口网站
  • 企业网站建设找外包公司做官方网站建设教程
  • 南阳网站推广费用珠海建设网站机构
  • 怎么做创业网站网站无收录的原因
  • 企业网站模板下载网址怎样开发一个管理系统
  • 怎么通过网站打广告网站网页模板
  • 怎么做公司的官方网站怎么去做一个网站
  • 让一个网站掉排名数字今天科技 网站
  • 曲阳做网站墨刀做网站
  • 张掖市建设局网站wordpress被恶意登录
  • 郑州做网站擎天免费网站搭建系统
  • 长沙推广网站特色设计网站推荐
  • 遵义网站建设公司有哪些wordpress友情链接提交
  • 网站建设有几种方案网站js特效
  • 网络集资网站怎么做网站建设源代码版权问题
  • 在手机上怎么建造网站大型购物网站建设方案
  • 蜗牛星际做网站服务器淘宝优惠的网站怎么做
  • google 网站收录网络服务协议书
  • 打开网站文件夹权限设置怎么用百度云做网站空间
  • dedeseo网站网络营销方式有哪些推广工具
  • 装修公司网站建设的意义常用网站大全
  • pc 移动网站 模板有没有专门做宝宝用品的网站
  • 企业网站手机版模板免费下载金蝶直播
  • 开封网站优化公司怎么做跳转不影响原网站排名
  • 网站建设业务的延伸性wordpress表情无插件
  • 网站建设与管理个人总结贵阳网站建设开发